Linux下read和fgets的一些比较

来源:互联网 发布:java哪些类不能被继承 编辑:程序博客网 时间:2024/05/20 10:21

read()函数定义如下

ssize_t read(int fd,void *buf,size_t nbyte)

read函数是负责从fd中读取**最多**nbytes个字节到buf,在读取数据时会将最后的回车(\n)同时读入到buf中,但是 不会在后面加上字符串结束符(\0)。成功时,read返回实际所读的字节数,如果返回的值是0,表示已经读到文件的结束了.若返回负值(通常为-1)表示发生了错误。;

#include <stdio.h>#include <unistd.h>int main(){    char a[100];    int n = 0;    while((n = read(fileno(stdin),a,sizeof(a))) > 0)    {        printf("%s\r\n",a);    }    return 0;}

输入 123时,结果如下

a={1,2,3,\n,...}

fgets()函数定义如下

char * fgets ( char * str, int num, FILE * stream )

fgets负责从stream(通常是文件或者标准输入stdin)中读取num个字符到str中,在读取数据时会将最后的回车(\n)同时读入到buf中,并且会在后面加上字符串结束符(\0)。成功返回非空指针,失败返回空指针

#include <stdio.h>#include <unistd.h>int main(){    char a[100];    int n = 0;    while((fgets (a,sizeof(a))) > 0)    {        printf("%s\r\n",a);    }    return 0;}

输入 123时,结果如下

a={1,2,3, \n,\0 ,...}
原创粉丝点击