如何区分EOF字符和文件的实际结尾?

时间:2012-02-01 05:16:51

标签: eof

在阅读文件时,我了解提供的最后一个字符是 EOF 。现在,当我在该文件中有一个EOF字符时会发生什么?

如何区分文件的“真实”结尾和EOF字符?

3 个答案:

答案 0 :(得分:10)

我决定将我的评论转到答案。

不能在你的文件中有一个“EOF字符”,因为没有这样的东西。底层文件系统知道文件中有多少字节;它不依赖于文件的内容来知道结束的位置。

您正在使用的C函数返回EOF( - 1),但未从文件中读取。这就是函数告诉你到达终点的方式。并且因为-1不是任何字符集中的有效字符,所以没有混淆。

答案 1 :(得分:4)

这个问题你需要一些背景知识。在Windows上,有一个真正的“EOF字符”的过时的DOS概念 - Ctrl-Z。实际上不可能用“假的”来说出“真实的”;具有嵌入式Ctrl-Z的文件将从程序的角度包含一些尾随的隐藏数据,该程序实际上将Ctrl-Z视为文件结尾字符。不要再尝试编写这种代码 - 这不是必需的。

在便携式C API和UNIX上,32位-1用于表示文件结尾,它不能是有效的8位或16位字符,因此很容易区分它们

答案 2 :(得分:1)

假设你在谈论C,EOF是-1,这不是一个字符(因此没有混淆)。