[問題] 關於FLUSH的問題

看板C_and_CPP (C/C++)作者 (成語)時間16年前 (2009/08/18 14:30), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/2 (看更多)
剛開始學到while的時候 還沒遇到這種問題 不過現在學到Text input/output 有一些不太理解的地方 就是FLUSH 例如: (1.) ------------------------------------------ ....... #define FLUSH while(getchar() != '\n') ....... int unitsSold; ....... while(scanf("%d", &unitsSold) != 1) { FLUSH; printf("\aInvalid number. Please re-enter: "); } ........ ------------------------------------------ 如果不加上FLUSH, 當我輸入'?'的時候, 會一直不斷的重複印"\aInvalid number. Please re-enter: ", 不是應該會停在scanf讓我輸入嗎? (2.) ------------------------------------------ ......... bool valid; ......... printf("<Y> correct: <N> not correct: \n"); FLUSH; if (toupper(getchar()) == 'Y') valid = 'true'; else { FLUSH; printf("\nYou respond 'no.' "); printf("Please re-enter Units Sold\n"); valid = 'false'; } while (!valid); ........ ------------------------------------------ 這裡有兩個FLUSH, 我知道第一個FLUSH要getchar是需要的, 但是else裡面的FLUSH還是不懂, 不知道為何要再放一個 在下是個新手, 請大家多多包涵^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.120.193.118 ※ 編輯: gnawnoraa 來自: 122.120.193.118 (08/18 14:32) ※ 編輯: gnawnoraa 來自: 122.120.193.118 (08/18 14:34)

08/18 14:45, , 1F
(1)因為scanf()那行只會讀入數字,所以'?'不會被讀入,而
08/18 14:45, 1F

08/18 14:46, , 2F
一直留在buffer裡,所以你必須用FLUSH將它清空,才能再讀
08/18 14:46, 2F
文章代碼(AID): #1AYafp0V (C_and_CPP)
文章代碼(AID): #1AYafp0V (C_and_CPP)