繁体   English   中英

搜寻EOF角色

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM