您的位置:首页 > 编程语言 > C语言/C++

c语言 判断文件结束问题 feof()

2013-10-11 20:01 225 查看
最近做开发的时候用到c语言文件的读写函数fread(),采用while(!feof(fp))来控制循环,结果发现每次读取数据的时候总会把最后一个数据单元读取两次,很是不解。

后来查找资料发现,原来fread()在读到文件最后一个字节时,feof(fp)还是为0值,此时while(!feof(fp))的控制条件依然为真,所以会将最后一个数据单元再次读取一遍。然后feof(fp)才为非0值,因此说这个方法在某些场合是不可行的。

可以采用 while(fread(p,len,1,fp)) 的方式来判断,因为fread返回的是读取的字节数,如果到了文件末尾,则读取到的字节数为0,while判断为假,跳出循环,即可把问题解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: