feof函数详解
网上很多feof讲解的很模糊,百看不如一试,经过笔者在编译器的亲自测试之后总结
如下:
第一种情况:
如果没有使用fread读取文件而直接使用feof函数得到的返回值是0;
第二种情况:
使用fread读取文件,假设使用fread(buf,1,1,filp) 一个字节一个字节的进行读取,如果
没有读到文件的结尾,那么feof返回值都是0,直到读到文件结尾那么返回值就是1
例如:假设要读取的文件名字为txt,文件内容是 hi
程序是:
char buf[10];
FILE *filp = fopen(“./txt”,”rw”); //笔者在linux下测试,./txt表示本目录下的txt文件
printf(“%dn”,feof(fip)); //打印 0 没有调用fread 必然打印0
fread(buf,1,1,filp);
printf(“%dn”,feof(fip)); //打印 0 读取第一个字节h
fread(buf,1,1,filp);
printf(“%dn”,feof(fip)); //打印 0 读取第二个字节i
fread(buf,1,1,filp);
printf(“%dn”,feof(fip)); //打印 0 读取第三个字节---换行符!!
fread(buf,1,1,filp);
printf(“%dn”,feof(fip)); //打印1 读取文件结束
所以需要注意的有两点一个是没有使用fread直接用feof会返回0,另一个就是换行符也算
是要读取的一个字节,所以如果文件是空的,使用fread之后调用feof也会返回0,因为空
文件也是先读取换行符! 然后再次fread之后使用feof就是1了。
第三种情况:
使用fread以n个字节为单位进行读取,例如以4个字节为一组,fread(buf,4,1,filp),如果
在4个字节中包含了文件结束符,那么返回的就是1
例如:
例如:假设要读取的文件名字为txt,文件内容是 kkk
那么程序这样:
char buf[10];
FILE *filp = fopen(“./txt”,”rw”); //笔者在linux下测试,./txt表示本目录下的txt文件
printf(“%dn”,feof(fip)); //打印 0 没有调用fread 必然打印0
fread(buf,4,1,filp);
printf(“%dn”,feof(fip)); //打印0 因为kkk加上换行符正好是4个字节
而如果txt的内容是 kk
fread(buf,1,1,filp);
printf(“%dn”,feof(fip)); //打印1 因为4个字节是 kk+换行符+文件结束符 包含
了文件结束符就会打印1
本文发布于:2023-05-25 15:40:56,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/88/17988.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:feof 函数详解.doc
本文 PDF 下载地址:feof 函数详解.pdf
留言与评论(共有 0 条评论) |