#include <stdio.h>
int main ()
{
char loop='y';
while(loop != 'n') {
printf("loop? ");
scanf("%c", &loop);
if(loop != 'y') {
loop='n';
}
}
return 0;
}
如果我键入'y',他会重新启动while循环但第二次忽略scanf并在此之后结束循环。有人可以帮忙吗?
答案 0 :(得分:15)
确保scanf
丢弃换行符。将其更改为:
scanf(" %c", &loop);
^
答案 1 :(得分:10)
您可能需要输入换行符才能输入您的程序,对吧?第二次循环执行时,它会读取换行符,该行正在“等待”读取并自动退出循环('\n' != 'y'
)。您可以通过使用此格式字符串来使scanf忽略空格:
" %c"
答案 2 :(得分:-2)
一个解决方案可以是在fflush(stdin)
语句之后使用scanf()
来清除输入缓冲区。