gpt4 book ai didi

c - EOF 前的 '\n' 个字符

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

char ch;
int n = 0;
FILE* fp;

fp = fopen("test.txt", "r");
while(!feof(fp)){
n++;
fscanf(fp, "%c", &ch);
fprintf("%c", ch);
}
printf("%d\n", n);

下面的test.txt

abcd

我试图通过打印出整数 n 来计算这个 while 循环执行了多少次。我以为结果会是 4,因为 fp 只包含 4 个字符,“abcd”。但实际结果是6。在EOF之前有两个换行符是ascii码10。

我仔细检查了 test.txt 文件,它不包含除 abcd 之外的其他字符。这两个换行符是从哪里来的?我用的是 vim 编辑器。

最佳答案

首先,当 getc 可以时,不要使用 scanf。其次,停止使用 feof 就好像它是魔术一样。 (Why is “while ( !feof (file) )” always wrong?)。第三,“abcd\n”是 5 个字符,您对 feof 的误用导致您重复使用最后的换行符并多算一个。

关于c - EOF 前的 '\n' 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29432632/

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