您的位置:首页 > 运维架构 > Linux

Linux下read和fgets的一些比较

2017-10-24 21:01 218 查看

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 ,...}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux