刚刚学习C编程,并坚持我确信的是Do/While循环的一些微不足道的事情。我有一个代码块,要求用户打“E”退出程序:getchar的意外行为
char exitletter;
do {
printf ("Please hit E to exit the Program\n");
exitletter = getchar();
} while (exitletter !='E');
然而,如果用户输入了不正确的字符,它打印“请按E退出计划”的两倍。如果用户输入说abcd,它会打印该消息五次。
有人能解释一下这里发生了什么吗?
处理'exitletter'为'\ n'的情况。 – cnicutar
要输入程序,用户输入一个字母并输入,换行符会保留在输入缓冲区中,以便在第二轮中立即读取。 –
另外,由“返回”按钮产生的换行符是一个字符,所以它由'getchar()'报告。 –