2012-03-16 91 views

回答

0

kbhit告訴你是否有人物在等待。 getch將返回下一個字符,如果需要的話可以返回一個字符。我能想到的兩個唯一的自然組合是如果有一個會返回一個字符,但不會等待如果沒有可用的字符。這很容易做到,因爲你已經有kbhitgetch

/* Returns a character from stdin, if there is one. 
* Otherwise, returns -1. */ 
int getch_nonblocking(void) 
{ 
    return kbhit() ? getch() : -1; 
} 
+0

對不起。我以爲你在使用詛咒。顯然,你正在使用conio。請看我修改後的答案。 – 2012-03-16 19:39:49

+0

這是_kbhit()和_getch()/ _ getche()形式conio.h。上面的算法不考慮特殊(功能)鍵。 – 2012-03-16 19:50:44

+0

你上面的例子工作正常,但我不明白,沒問題 – 2012-03-16 19:52:00

0

根據您提到的kbhitgetch,您可能正在使用Windows。在這種情況下,您可以嘗試GetKeyboardState

+0

謝謝,但你能告訴我一個簡單的例子吧。 – 2012-03-16 19:34:53

+0

您和MSDN Library之間是否存在路由器? – Kaz 2012-03-16 19:59:58

+0

基本上,給它一個256字節的數組以獲得狀態,然後通過再次使用它來檢查是否有任何鍵狀態已經從原始數組改變。 – chris 2012-03-16 20:19:58