Linux下read和fgets的一些比较

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 ,...}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值