【问题标题】: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() 成员)可以预测下一次读取操作是否会成功,但相信我,他们不能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 2021-07-26
      • 2011-02-03
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多