关于C语言feof()函数判断文件结尾的问题分析

来源:互联网 发布:念奴娇东方朔知乎 编辑:程序博客网 时间:2024/05/21 14:42

相信很多C语言初学者都遇到过这种情况:

使用

while(!feof(fp)){fscanf(...);//或者//fread(...)}
读文件时经常会重复读最后一段字符。

据说当年的X老师对此也很困惑,还曾经对此做过专题分析……

实际上这并没有多么高深莫测,也不是feof()函数的bug,只是我们不了解feof()函数的性质。

feof()的性质

只有当文件位置指针指向文件末尾,再发生读/写操作,然后再调用feof()时,才会得到文件结束的信息。


因此,正确的读取文件方法如下:

char buf[1024];fread(buf, 1024, 1, fp);while (!feof(fp)){//TODO:fread(buf, 1024, 1, fp);}


阅读全文
0 0