作者gnawnoraa (成語)
看板C_and_CPP
標題[問題] 關於FLUSH的問題
時間Tue Aug 18 14:30:10 2009
剛開始學到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)
推 imprazaguy:(1)因為scanf()那行只會讀入數字,所以'?'不會被讀入,而 08/18 14:45
→ imprazaguy:一直留在buffer裡,所以你必須用FLUSH將它清空,才能再讀 08/18 14:46