首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fseek on EOF字符

fseek on EOF字符
EN

Stack Overflow用户
提问于 2012-11-08 22:50:11
回答 2查看 9K关注 0票数 0

我目前正在使用fgetc() in循环来读取整个文件。

但是我需要在这个循环的两次迭代中检测EOF。我知道不能使用ungetc()EOF返回到流中。

如果使用

代码语言:javascript
复制
fseek(file, -1, SEEK_CUR)

使用fseekEOF之前再次阅读它是否安全和便携?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-08 23:34:39

您可以使用

代码语言:javascript
复制
fseek(file, 0, SEEK_END)

如果你尝试读它,你会得到你的第二个EOF。

编辑:

仔细阅读参考资料:“允许库实现不支持SEEK_END (因此,使用它的代码没有真正的标准可移植性)。”

我想您的解决方案在可移植性方面是最好的。

只需小心使用fseek (作为说明,因为我相信这不是您的情况):Using fseek to backtrack

票数 1
EN

Stack Overflow用户

发布于 2012-11-08 22:52:41

在大多数操作系统上,EOF不是文件中存在的物理字符。这只是一个虚拟的“带外”字符,fgetc()返回这个字符是为了表示没有更多的输入。

为什么你还需要再买一次EOF?文件中没有更多的数据,那么“备份”再次命中文件末尾的意义是什么?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13291334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档