_kbhit函数详解
kbhit() 是一個C和C++函數,用于非阻塞地響應鍵盤輸入事件,為 “keyboard hit(鍵盤敲擊)”的簡寫。
kbhit 是 _kbhit() 的棄用別名,盡管它依然受到支持,微
函數名:kbhit()
功能及返回值: 檢查當前是否有鍵盤輸入,若有則返回一個非0值,否則返回0。
用 法:int kbhit(void);
C++語言包含頭文件: include <conio.h>。
2020.7.9 已棄用 kbhit(),需替換為_kbhit()。
C語言不需包含額外頭文件。
在VC++6.0下為_kbhit()。
功能及返回值同上。
軟仍建議使用遵循 C 命名規則的 _kbhit()
C語言
下面的代碼,如果沒有鍵盤輸入程序一直輸出“Hello World”,直到用戶按Esc結束。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include<stdio.h> #include<stdlib.h> int?main() { ????char?ch; ????while(ch != 27) ????{ ????printf("Hello World\n"); ????????if(kbhit()) ????????????ch = getch(); ????} ????printf("End!\n"); ????system("pause"); ????return?0; } |
C++語言
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include<conio.h> #include<iostream> using?namespace?std; int main() { ????while(!kbhit()) //當沒有鍵按下 ????{ ????????????cout << "無鍵按下" << endl; ????} ????????cout << "有鍵按下" << endl; ????????system("pause"); ????????return 0; } |
kbhit() 在執行時,檢測是否有按鍵按下,有按下則返回非0值,沒有按下則返回0,是非阻塞函數;
而 getch() 在執行時,檢測按下什么鍵,如果不按鍵該函數不返回,也就不進行下一步操作,是阻塞函數。
類似地,在 TC2.0 中有一個處理鍵盤輸入的函數?bioskey()。
| 1 | int?bioskey(int?cmd); |
當參數 cmd 為 1 時,bioskey() 檢測是否有鍵按下。沒有鍵按下時返回0;有鍵按下時返回按鍵碼(
任何按鍵碼都不為0),但此時并不將檢測到的按鍵碼從鍵盤緩沖隊列中清除, 是非阻塞函數。
當參數 cmd 為 0 時,bioskey() 返回鍵盤緩沖隊列中的按鍵碼,并將此按鍵碼從鍵盤緩沖隊列中清
除。如果鍵盤緩沖隊列為空,則一直等到有鍵按下,才將得到的按鍵碼返回。是阻塞調用。
實際上,kbhit() 有點像?bioskey(1) 。
總結
以上是生活随笔為你收集整理的_kbhit函数详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 那些值得借鉴的的国外创意404错误页面设
- 下一篇: 21款奔驰S400L升级原厂小柏林之声音