【问题标题】:file reading: feof() for binary files文件读取: feof() 用于二进制文件
【发布时间】:2010-07-05 16:53:28
【问题描述】:
我正在读取一个二进制文件。当它到达终点时。它似乎被 feof() 函数终止。是因为二进制文件没有EOF字符吗?如果是这样,我该如何解决。
目前我的代码正在使用 while 循环
while (!feof(f))
当它到达位置 5526900 的文件末尾时。它不会停止。它只是一直在尝试阅读,而我被困在循环中。
谁能告诉我为什么以及如何解决它。
谢谢
【问题讨论】:
标签:
c++
c
file-io
binaryfiles
【解决方案1】:
您不应该使用 feof() 循环 - 而是使用 fread() 的返回值 - 循环直到它返回零。如果您考虑读取空文件,这很容易看出 - feof() 在读取操作后返回 EOF 状态,因此如果用作循环控制,它将始终尝试读取虚假数据。
我不知道为什么这么多人认为 feof()(以及 C++ 流的 eof() 成员)可以预测下一次读取操作是否会成功,但相信我,他们不能。