文件读取:二进制文件的feof()

时间:2010-07-05 16:53:28

标签: c++ c file-io binaryfiles

我正在读一个二进制文件。当它到达终点时似乎它被feof()函数终止了。是因为二进制文件没有EOF字符?如果是这样我怎么解决呢。

目前我的代码正在使用while循环

while (!feof(f))

当它到达位置5526900处的文件末尾时,它不会停止。它只是不断尝试阅读,而且我陷入了困境。

任何人都可以告诉我为什么以及如何解决它。

由于

1 个答案:

答案 0 :(得分:22)

你不应该使用feof()来循环 - 而是使用fread()的返回值 - 循环直到它返回零。如果您考虑读取空文件,这很容易看出 - feof()在读取操作后返回EOF状态,因此如果用作循环控件,它将始终尝试读取伪造数据。

我不知道为什么这么多人认为feof()(以及C ++流的eof()成员)可以预测下一次读操作是否会成功,但相信我,他们不能。