常见的误解:文件末尾有一个EOF字符

我正在阅读“卡特的PC汇编语言”,我在第32页的脚注中看到了这句话让我很困惑!
如果我们假设文件末尾可能没有EOF(正如书中所说)是正确的陈述,那么我们如何才能找出文件末尾的位置?
它还产生了另一个问题:fseek是否使用EOF在文件中来回传递?

PC => ^ Z:EOF

在旧版PC天中,ctrl-Z是EOF文件中的信号。

在UNIX和其他现代系统下:在读取stat.st_size后面,发出EOF信号

来自http://www.drpaulcarter.com/cs/common-c-errors.php :

这个价值是多少? EOF对学生的一个常见误解是文件最后有一个特殊的EOF字符。 文件末尾没有存储特殊字符。 EOF是函数返回的整数错误代码。

好吧, EOF不存储在文件的末尾,而不是charEOF是一条错误消息,当没有更多数据要读取时,读取函数会返回。 这就是getchar返回int的原因 – 它可能返回一个转换为intchar ,或者返回int EOF (它不是有效的char ,所以如果你得到它,你可以确定你传递了文件的结尾)。

EOF未存储在文件中。 当没有更多数据要读取或发生输入错误时,OS会返回EOF(通常定义为-1)。 所以一旦你到达文件的末尾,你必须点击EOF。

我对你书中的陈述的猜测是,它意味着"EOF is not necessarily be at the end of file but also possible to have it somewhere in the middle of a file". 这对预期的输入错误是正确的。

在C代码的上下文中, EOF仅表示没有更多可用于给定输入流的数据。 对应于文件本身中的特殊EOF字符是否是底层文件或I / O系统的函数。