我正在阅读一个二进制文件。当它到达结尾时,似乎被feof()函数终止了。这是因为二进制文件没有EOF字符吗?如果是这样,我该如何解决。
目前我的代码使用while循环。
while (!feof(f))
当它在位置5526900到达文件末尾时,它不会停止。它只是继续尝试读取,我陷入了循环中。
有人能告诉我为什么以及如何解决吗。
谢谢
我正在阅读一个二进制文件。当它到达结尾时,似乎被feof()函数终止了。这是因为二进制文件没有EOF字符吗?如果是这样,我该如何解决。
目前我的代码使用while循环。
while (!feof(f))
当它在位置5526900到达文件末尾时,它不会停止。它只是继续尝试读取,我陷入了循环中。
有人能告诉我为什么以及如何解决吗。
谢谢
在循环中不应使用feof(),而应该使用fread()的返回值-循环直到它返回零。如果您考虑读取一个空文件,这很容易理解-feof()在读取操作之后返回EOF状态,因此如果将其用作循环控制,则始终会尝试读取虚假数据。
我不知道为什么有那么多人认为feof()(以及C++流的eof()成员)可以预测下一个读取操作是否成功,但请相信我,它们不能。