#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有换行符,第一行(和第二行)没有换行符.
xxdyx
*
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("%sn",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("%sn",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 %sn",buf1);
printf("tbuf2 is %sn",buf2);
return 0;
}
root@ubuntu:/opt/linux# ./a.out
buf1 is 01234567890123456789012345678901234567890123456789
buf2 is hello world!
root@ubuntu:/opt/linux#