gpt4 book ai didi

c - fgetc 读取值为 -1 的字符

转载 作者:行者123 更新时间:2023-11-30 21:01:50 24 4
gpt4 key购买 nike

fgetc() 函数从 Ubuntu 中的文本文件中读取字符。

EoF 之前的最后一个字符的代码 = -1。

这到底是什么?在文本编辑器文件中似乎没问题,末尾没有奇怪的符号。

while (!feof(fp))
{
c = fgetc(fp);
printf("%c %i\n", c, c);//
}

最佳答案

feof 表示您已尝试读取超过文件末尾 - 这意味着您首先必须到达它。因此,只有在您尝试阅读并且系统意识到您已读完后,它才会起作用。如果您尝试读取文件末尾之后的内容,fgetc 会返回什么? EOF(方便地,-1 - 这就是为什么 fgetc 返回 int 而不是 char)。

所以发生的事情是你进入循环 - 因为你还没有尝试读取末尾 - 并调用 fgetc 它返回 -1 因为你试图读取末尾文件的。下一次循环时,feof 告诉您已经到达文件末尾并尝试读取它并退出。

您应该阅读要使用的函数的文档:feoffgetc 文档解释了这一点。但即使他们没有,简单的谷歌搜索也能回答你的问题:Why is “while ( !feof (file) )” always wrong? .

关于c - fgetc 读取值为 -1 的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34245695/

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