linux fgets函数用法,fgets的用法实例!!!

#include char *fgets(char *restrict buf, int n, FILE *restrict fp);返回值: 成功返回buf,若已到达文件结尾或出错则返回NULL;

实例:

1. 必须指定缓冲区的长度,函数一直读到下一个换行符;见实例 I

2. 最多读取n -1个字符,读入的字符被送入缓冲区,该缓冲区以null字符结尾;见实例 II

3. 如若该行(包含最后一个换行符)的字符数超过n - 1,fgets下次调用会继续改行;附件III

实例 I:缓冲区buf的长度一直读到下一个换行符

1.txt内容:

备注:1. 仅最后的a有换行符,第一行(和第二行)没有换行符.

0000000 a a a a a a a a a a a a a a a a

*

0000420 a a a a \n

0000425

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

源码&& 运行结果:

root@ubuntu:/opt/linux# cat 1.c 1.txt

#include #include int main()

{

FILE *stream;

char buf1[4096];

char buf2[1024];

stream = fopen("1.txt","r+");

if(stream == NULL)

{

return -1;

}

fgets(buf1,1024,stream);

printf("%s\n",buf1);

return 0;

}

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

root@ubuntu:/opt/linux# gcc 1.c

root@ubuntu:/opt/linux# ./a.out

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

实例II:最多读取n-1个字符。

1.txt内容:

root@ubuntu:/opt/linux# od -c 1.txt

0000000 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5

0000020 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

0000040 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7

0000060 8 9 \n

0000063

1.txt内容:

root@ubuntu:/opt/linux# cat 1.txt

01234567890123456789012345678901234567890123456789

root@ubuntu:/opt/linux#

源码&& 运行结果:

root@ubuntu:/opt/linux# cat 1.c;gcc 1.c;./a.out

#include #include int main()

{

FILE *stream;

char buf1[4096];

char buf2[1024];

stream = fopen("1.txt","r+");

if(stream == NULL)

{

return -1;

}

fgets(buf1,11,stream);

printf("%s\n",buf1);

return 0;

}

0123456789

root@ubuntu:/opt/linux#

实例III:

1.txt内容与结构:

0000000 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5

0000020 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

0000040 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7

0000060 8 9 h e l l o w o r l d ! \n \n

0000100

root@ubuntu:/opt/linux# cat 1.txt

01234567890123456789012345678901234567890123456789hello world!

root@ubuntu:/opt/linux#

2.源码 && 运行结果:

root@ubuntu:/opt/linux# cat 1.c

#include #include int main()

{

FILE *stream;

char buf1[4096];

char buf2[1024];

stream = fopen("1.txt","r+");

if(stream == NULL)

{

return -1;

}

fgets(buf1,51,stream);

fgets(buf2, 1000,stream);

printf("\tbuf1 is %s\n",buf1);

printf("\tbuf2 is %s\n",buf2);

return 0;

}

root@ubuntu:/opt/linux# ./a.out

buf1 is 01234567890123456789012345678901234567890123456789

buf2 is hello world!

root@ubuntu:/opt/linux#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值