簡體   English   中英

While-loop 第二次忽略 scanf

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM