[英]While-loop ignores scanf the second time
#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 並在此之后結束循環。 任何人都可以幫忙嗎?
確保scanf
丟棄換行符。 將其更改為:
scanf(" %c", &loop);
^
您可能必須輸入換行符,以便輸入進入您的程序,對嗎? 您的循環第二次執行時,它會讀取“等待”讀取的換行符並自動退出循環( '\\n' != 'y'
)。 您可以使用以下格式字符串使 scanf 忽略空格:
" %c"
一種解決方案是在scanf()
語句之后使用fflush(stdin)
來清除輸入緩沖區。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.