C无缘无故地进入for循环

时间:2013-06-18 13:51:29

标签: c loops breakpoints break

所以这是一个简单的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;                        
    }

}

3 个答案:

答案 0 :(得分:3)

这是scanf中%c的默认行为 - 它会看到换行符并将其视为一个字符。要覆盖它,请在格式前面的%c之前添加一个空格:

scanf(" %c",&c);

答案 1 :(得分:2)

该函数将在您输入的每一行的末尾获得\n

答案 2 :(得分:-2)

可能char c有任何其他值,因为输入流未被刷新,因此scanf正在读取您给出的其他字符而不是字符..所以请尝试fflush(stdin)