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