[英]fseek on EOF character
我目前在循环中使用fgetc()
读取整个文件。
但是我需要在此循环的两次迭代中检测EOF
。 我知道EOF
不能使用ungetc()
返回流。
那使用呢
fseek(file, -1, SEEK_CUR)
在使用fseek
进行EOF
之前再次阅读是否安全又便携?
谢谢。
在大多数操作系统上, EOF
不是文件中存在的物理字符。 fgetc()
返回的只是一个虚拟的“带外”字符,表示没有更多输入。
为什么您需要再次获得EOF
? 文件中没有更多数据,那么“备份”再次达到文件末尾的意义何在?
您可以使用
fseek(file, 0, SEEK_END)
如果您尝试阅读它,则会获得第二个EOF。
编辑:
请更仔细地阅读该参考资料: “不允许库实现有意义地支持SEEK_END(因此,使用它的代码没有真正的标准可移植性)。”
我想您的解决方案是可移植性最好的解决方案。
只需注意fseek(请注意,因为我相信这不是您的情况): 使用fseek回溯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.