gpt4 book ai didi

无法理解为什么从输入文件中收到一个额外的字符

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

我有这个:

#include<stdio.h>
int main() {

FILE * stream = fopen("abc1", "r");
int c, i;
i=1;
do
{
c = fgetc(stream);
if (c == EOF)
printf("c is EOF\n");
printf("in loop : %d %c\n", i, c);
i++;

} while(isspace(c));
printf("%d\n", i);
}

文件 abc1 只包含 4 个空格。我希望看到 o/p c is EOFin loop : 5 之前打印出来,但它在那之后出现。为什么会这样?

输出:

$ ./ungetctest 
in loop : 1
in loop : 2
in loop : 3
in loop : 4
in loop : 5

c is EOF
in loop : 6 �
7

最佳答案

in loop : 5 之后的空行表示第 5 个字符是换行符。您的文件必须包含四个空格和一个换行符。

您可以通过将 %c 更改为 %d 来确认这一点,然后您将获得字符的 ASCII 码,32 为空格和 10 换行符。

isspace 函数也适用于换行。

如果您非常确定它不包含一个,请尝试以 "rb" 模式打开。在 "r" 模式(又名阅读文本模式)中,操作系统可能会执行行结束翻译,并且如果文件不包含换行符,则可能会在文件的最后一行附加一个换行符。

关于无法理解为什么从输入文件中收到一个额外的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24987036/

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