gpt4 book ai didi

c - c中的文件输入输出流

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:25 25 4
gpt4 key购买 nike

假设我使用 C 语言以写入模式打开一个文本文件。现在我向其中添加一些文本数据。

1.内部数据是如何存储在文件中的?每个字符都存储为 8 位 ascii 码吗?

我们从不在写入文件结束时添加 EOF,我们使用 fclose() 关闭文件。

2.EOF 是如何添加到文件中的?它是如何存储在文件中的?

当我们使用 getchar() 逐个字符读取该文件时,我们能够检测到 EOF。现在 EOF 如果是 ctrl+z ,这些是 2 个字符 ^z 保存在文件末尾。所以 getchar() 将得到 ^ 然后是 z 。所以,

3.getchar()如何检测EOF?

最佳答案

EOF 不是存储在文件中的字符,它是读取文件时获得的特殊返回代码。文件 I/O 系统知道文件中有多少个字符,因为它存储了文件的确切长度。当你的程序试图读取最后一个可用字符之后的一个字符时,文件 I/O 系统返回一个特殊值 EOF,它在 char 的范围之外(它是出于这个原因,诸如 getchar() 之类的字符读取例程返回 int 而不是 char)。

Ctrl+Z 序列也不是 EOF 字符。它是一个特殊的键序列,告诉 shell 关闭与程序关联的控制台输入流。流关闭后,下一次读取将 EOF 返回给您的程序。然而,重要的是要理解 Ctrl+Z 只是一个由命令行处理器解释的键盘序列 - 与 Ctrl+C 是告诉命令行处理器终止程序的序列。

最后,^Z 不是存储在文件中的两个字符,它是生成的 Ctrl+Z 序列的屏幕表示由命令行处理器在视觉上确认键盘序列已被接受。

关于c - c中的文件输入输出流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23765392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com