我正在读取一个二进制文件。当它到达终点时。看来它是由 feof() 函数终止的。是因为二进制文件没有EOF字符吗?如果是这样我该如何解决它。
目前我的代码正在使用 while 循环
while (!feof(f))
当它到达文件末尾位置 5526900 时。它不会停止。它只是不断尝试阅读,而我陷入了循环。
谁能告诉我为什么以及如何解决它。
Thanks
您不应该使用 feof() 进行循环 - 相反,使用 fread() 的返回值 - 循环直到它返回零。如果您考虑读取空文件,这一点很容易看出 - feof() 在读取操作后返回 EOF 状态,因此如果用作循环控制,它将始终尝试读取虚假数据。
我不知道为什么这么多人认为 feof() (以及 C++ 流的 eof() 成员)可以预测下一次读取操作是否会成功,但相信我,他们不能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)