C:scanf()在循环中
这个程序似乎不会在while循环的每次迭代中都接受输入,而理想情况下它应该接受。但是,当我用%d(即整数输入而不是字符输入)替换scanf()函数的%c参数时,它似乎工作得非常好,while循环的每次迭代都接受该输入。为什么我会看到这种差异C:scanf()在循环中,c,loops,scanf,C,Loops,Scanf,这个程序似乎不会在while循环的每次迭代中都接受输入,而理想情况下它应该接受。但是,当我用%d(即整数输入而不是字符输入)替换scanf()函数的%c参数时,它似乎工作得非常好,while循环的每次迭代都接受该输入。为什么我会看到这种差异 int main() { char grade; int i=0; while(i<10){ printf("Enter ur grade\n"); scanf("%c", &grade
int main()
{
char grade;
int i=0;
while(i<10){
printf("Enter ur grade\n");
scanf("%c", &grade);
switch(grade){
case 'A' : printf("U R THE BEST\n");
break;
case 'B' : printf("U R VERY GOOD DUDE...\n");
break;
case 'C' : printf("U R GOOD DUDE...\n");
break;
case 'D' : printf("U R Not good DUDE...\n");
break;
case 'E' : printf("U R WORST DUDE...\n");
break;
default : printf("U r AWESOME...\n");
break;
}
i++;
}
intmain()
{
煤焦品位;
int i=0;
而(i在scanf
的%c
之前添加空格。这样做是为了在扫描字符之前删除stdin
中的所有空格。scanf
不接受\n
(回车键)输入一个字符并将其留在缓冲区中,当再次调用scanf
时,缓冲区将使用该字符
另一件事:你忘了在代码中放一个}
。试试这个:在%c
前面放一个空格,因为它也存储\n
scanf(" %c", &grade);
你能举一个输入和输出的例子吗?scanf不会从输入缓冲区中删除换行符。很多重复都是这样的:(不是真正的重复,而是问题的解决方案)每次你输入一个字符(实际上输入了两个字符),就有一个换行符(\n
)输入流中留下的字符,将在下一次迭代中使用。您需要使用getchar()
或类似技术清除它。添加fflush(stdin);扫描后大括号不平衡。for(int i=0;i<10;++i)
的也有什么问题吗?