#include <stdio.h>
int main(){
char quit = 'n';
do{
printf("Quit? (Y/N)");
scanf("%c", &quit);
}while(quit=='n' || quit=='N');
}
为什么我的程序在输入任何内容后就退出了?
#include <stdio.h>
int main(){
char quit = 'n';
do{
printf("Quit? (Y/N)");
scanf("%c", &quit);
}while(quit=='n' || quit=='N');
}
%c
格式说明符接受任何字符,包括换行符。因此,如果您按下N
,那么scanf
会首先读取该字符,但是按下ENTER键后的换行符仍然在输入缓冲区中。在下一次循环迭代中,将读取换行符。由于换行符既不是n
也不是N
,因此循环退出。scanf(" %c", &quit);
:
#include <stdio.h>
int main(){
char quit = 'n';
do{
printf("Quit? (Y/N)");
scanf(" %c", &quit);
}while(quit=='n' || quit=='N');
}
如需更多信息,请阅读此链接