我目前正在使用fgetc()
循环读取整个文件。
但我需要EOF
在这个循环的两次迭代中检测。我知道EOF
不能使用ungetc()
.
怎么用
fseek(file, -1, SEEK_CUR)
EOF
在使用之前获取fseek
并再次阅读它是否安全且便携?
谢谢。
在大多数操作系统上,EOF
不是文件中存在的物理字符。它只是一个虚拟的“带外”字符,fgetc()
它返回表示没有更多输入的信号。
为什么你需要EOF
再次获得?文件中没有更多数据,那么“备份”再次到达文件末尾有什么意义呢?
您可以使用
fseek(file, 0, SEEK_END)
如果您尝试从中读取,您将获得第二个 EOF。
编辑:
更仔细地阅读参考资料:“允许库实现无意义地支持 SEEK_END(因此,使用它的代码没有真正的标准可移植性)。”
我想您的解决方案在可移植性方面是最好的。
小心 fseek (作为一个注释,因为我相信这不是你的情况):使用 fseek 回溯