我目前正在使用fgetc() in循环来读取整个文件。
但是我需要在这个循环的两次迭代中检测EOF。我知道不能使用ungetc()将EOF返回到流中。
如果使用
fseek(file, -1, SEEK_CUR)使用fseek在EOF之前再次阅读它是否安全和便携?
谢谢。
发布于 2012-11-08 23:34:39
您可以使用
fseek(file, 0, SEEK_END)如果你尝试读它,你会得到你的第二个EOF。
编辑:
仔细阅读参考资料:“允许库实现不支持SEEK_END (因此,使用它的代码没有真正的标准可移植性)。”
我想您的解决方案在可移植性方面是最好的。
只需小心使用fseek (作为说明,因为我相信这不是您的情况):Using fseek to backtrack
发布于 2012-11-08 22:52:41
在大多数操作系统上,EOF不是文件中存在的物理字符。这只是一个虚拟的“带外”字符,fgetc()返回这个字符是为了表示没有更多的输入。
为什么你还需要再买一次EOF?文件中没有更多的数据,那么“备份”再次命中文件末尾的意义是什么?
https://stackoverflow.com/questions/13291334
复制相似问题