【发布时间】:2014-05-20 16:35:45
【问题描述】:
假设我使用 c 语言以写入模式打开一个文本文件。现在我向它添加一些文本数据。
1.内部数据是如何存储在文件中的?每个字符是否存储为 8 位 ascii 代码?
我们永远不会在写入文件的末尾添加 EOF,我们使用 fclose() 来关闭文件。
2.然后EOF如何添加到文件中?它是如何存储在文件中的?
当我们使用 getchar() 逐字符读取该文件时,我们能够检测到 EOF。现在 EOF 如果是 ctrl+z ,这些是 2 个字符 ^z 保存在文件末尾。所以 getchar() 会得到 ^ 然后 z 。所以,
3.getchar()如何检测EOF?
【问题讨论】:
-
是的,字符单独存储为 8 位字节。如果你写出 ASCII,那么你会得到 ASCII。如果你写出一个字节
0x02,那么你会得到一个字节0x02。 EOF 是文件读取函数在知道它位于文件末尾时提供的返回。它实际上不是文件中的任何内容。这些函数知道它们在最后,因为文件系统提供有关文件长度的信息,并且文件 I/O 函数跟踪它们在文件中的位置。