#include <stdio.h>
int main(){
char quit = 'n';
do{
printf("Quit? (Y/N)");
scanf("%c", &quit);
}while(quit=='n' || quit=='N');
}
为什么输入任何内容后我的程序都会退出?
答案 0 :(得分:7)
%c
格式说明符接受任何字符,包括换行符。因此,如果按N
,则scanf
首先读取该字符,但按ENTER键的换行符仍在输入缓冲区中。在下一个循环迭代中,读取换行符。因为换行符既不是n
也不是N
,因此循环退出。
您需要在格式字符串的开头添加空格。这将吸收任何领先的空白,包括换行符。
scanf(" %c", &quit);
答案 1 :(得分:1)
只需将您的代码更改为:
#include <stdio.h>
int main(){
char quit = 'n';
do{
printf("Quit? (Y/N)");
scanf(" %c", &quit);
}while(quit=='n' || quit=='N');
}
有关详细信息,请阅读此link