只是学习C编程,并且坚持我确信Do/While循环的一些琐碎的东西我有一个代码块,要求用户点击E来退出程序:

char exitletter;

do {
printf ("Please hit E to exit the Program\n");
exitletter = getchar();
} while (exitletter !='E');

但是,如果用户输入了一个不正确的字符,它会打印“请点击E退出程序”两次。如果用户输入say abcd,则会打印五次消息。
有人能解释一下这里发生了什么事吗?

最佳答案

一个不同的答案虽然晚了:
你可以在看完这个字符后立即调用fflush

char exitletter;

    do {
        printf ("Please hit E to exit the Program\n");
        exitletter = getchar();
        fflush(stdin);
    }
    while (exitletter !='E');

这会像你期望的那样奏效。

10-08 16:15