如果使用scanf()時輸入異常,可以用fflush(stdin)先將輸入緩存清除再重新輸入,如:while(scanf("%d", &a) != 1){fflush(stdin);}但是用bioskey(1),kbhit(),卻不能使用fflush(stdin)清除原來的鍵值。當按下按鍵時,如果鍵值沒有被其他函數如getch()接收,則再次用bioskey(1),kbhit()返回的值仍然表示為有按鍵按下代碼如下: while(1){printf("bioskey(1) = %d\n", bioskey(1));fflush(stdin);sleep(2);}
1 回答

滄海一幻覺
TA貢獻1824條經驗 獲得超5個贊
不是一個系統的。 scanf, printf , fflush之類的屬于buffed io,這是比較高級的一套東西。 而 kbhit, getch什么的是更底層的輸入方式, 不通過scanf用的這個buffer的,所以 fflush對這個也沒什么用
- 1 回答
- 0 關注
- 81 瀏覽
添加回答
舉報
0/150
提交
取消