我知道在到达 EOF
之前,关于 scanf
的同一主题有很多问题,但这是我没有见过的特殊情况。假设我想编写一个 C 程序,其中用户输入单个字符,程序打印回该字符以及用户输入字符的次数,直到他们按 CTRL+D (EOF)
这就是我所拥有的:
#include <stdio.h>
int main(){
char thing;
int i=0;
while(scanf("%c", &thing) != EOF){
printf("time:%d, char:%c\n",i,thing);
i++;
}
return 0;
}
但是,输出并不符合预期。内容如下:
f
time:0, char:f
time:1, char:
p
time:2, char:p
time:3, char:
m
time:4, char:m
time:5, char:
我不太确定为什么 i
再次递增,以及为什么 printf
再次执行。也许我错过了一些东西。
最佳答案
尝试
#include <stdio.h>
int main(){
char thing;
int i=0;
while(scanf("%c", &thing) != EOF){
if (thing!='\n') {
printf("time:%d, char:%c\n",i,thing);
i++;
}
}
return 0;
}
关于C:扫描 While not EOF 循环意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41865200/