所以这是一个简单的C代码,只有当我按下除“i”或“e”之外的任何其他键时才能从循环中退出,但出于某种原因,即使按下“i”或“e”,程序也会进入最后的其他声明。我真的不知道为什么会这样,我尝试使用while而不是for,而getchar而不是scanf,但它仍然无法正常工作。 “printf(”$“);” 最后是告诉我它达到了其他声明。 谁能帮助我理解为什么会这样?
for(;;)
{
scanf("%c",&c);
if(c=='i')
{
printf("insert\n");
}
else if(c=='e')
{
printf("elim\n");
}
else
{
printf("$");
break;
}
}
答案 0 :(得分:3)
这是scanf中%c
的默认行为 - 它会看到换行符并将其视为一个字符。要覆盖它,请在格式前面的%c之前添加一个空格:
scanf(" %c",&c);
答案 1 :(得分:2)
该函数将在您输入的每一行的末尾获得\n
。
答案 2 :(得分:-2)
可能char c
有任何其他值,因为输入流未被刷新,因此scanf
正在读取您给出的其他字符而不是字符..所以请尝试fflush(stdin)
。