2018/09/18

C 語言 scanf() 在迴圈沒有停止的問題

程式大概是這樣:
scanf("%c", &input)
while (input == 'y') {
    // ....
    scanf("%c", input);
}

結果 while 裡面的 scanf() 沒有停。原因是輸入「y」並按下 enter 後,scanf 拿到的是「2\n」,所以 input 會是 2,但 \n 還在 input buffer 裡面,第二次 scanf 會以為使用者已經有輸入值 (空字串) 就繼續往下執行了。

要讓 scanf() 避開這個問題,只要在「%c」前面加上一個空白即可:
scanf(" %c", &input)

Ref:

沒有留言:

張貼留言

除非必要,請不要在回覆時留下您的敏感資訊 (電話、email、地址等)