0

所以这是一个简单的 C 代码,当我按下除“i”或“e”之外的任何其他键时,它应该只退出循环,但出于某种原因,即使你按下“i”或“e”,程序也会进入最后一个 else陈述。我真的不知道为什么会这样,我试过用while代替for,用getchar代替scanf,但它仍然不起作用。"printf("$");" 最后是向我展示它达到了 else 语句。谁能帮我理解为什么会这样?

for(;;)
{
    scanf("%c",&c);
    if(c=='i')
    {
        printf("insert\n");
    }
    else if(c=='e')
    {
        printf("elim\n");
    }
    else 
    {
        printf("$");
                    break;                        
    }

}
4

3 回答 3

3

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

scanf(" %c",&c);
于 2013-06-18T14:01:04.517 回答
2

该函数将\n在您键入的每一行的末尾得到一个。

于 2013-06-18T13:53:15.457 回答
-2

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

于 2013-06-18T13:55:38.297 回答