在阅读文件时,我了解提供的最后一个字符是 EOF 。现在,当我在该文件中有一个EOF
字符时会发生什么?
如何区分文件的“真实”结尾和EOF
字符?
答案 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,这不是一个字符(因此没有混淆)。