最近我在我的电脑上运行了一个C程序。其中有一个for循环,可以扫描一些字符d。这个for循环运行了3次。在每次运行时,它会打印出运行的计数,然后扫描字符d的值。该程序如下:
#include<stdio.h>
int main(){
int f;
char d;
for(f=0;f<3;f++){
printf("Choice %d\n", f);
scanf("%c", &d);
}
return 0;
}
现在的问题是,当我运行程序时,如果f为1,for循环会跳过scanf部分。现在如果我按照以下方式更改代码:
#include<stdio.h>
int main(){
int f;
int d;
for(f=0;f<3;f++){
printf("Choice %d\n", f);
scanf("%d", &d);
}
return 0;
}
现在程序运行良好,对于for循环的每次迭代,都会执行scanf。
那么问题似乎出在哪里呢?我的意思是,当d是int类型时,它可以很好地工作,但当d是char类型时,它不能正确工作。
scanf()
的手册呢?无论你如何修复,你都使用它的方式是错误的。 - Iharob Al Asimiscanf
并且连续三次读取到同一个变量中。 - Jared Burrows