2013-01-09 84 views
2

可能重複:
C/C++: Capture characters from standard input without waiting for enter to be pressed
How do you do non-blocking console I/O on Linux in C?閱讀從鍵盤輸入,無需按輸入

我試圖寫在C語言中這是一個恆定的循環的程序,但我需要能夠在每個週期開始時接收來自鍵盤的輸入,或者如果沒有按鍵被按下,則需要繼續。

getchar()和_getch()不足,因爲它們都等待輸入。如果有人知道一個類似於_getch的函數,但它不會等待輸入,這將非常感激。

+0

哪個系統將你的代碼運行:如果您需要知道什麼,關鍵是爲好,那麼你就可以getch()

像這樣結合起來? –

+0

發佈你的代碼,你已經試過.. –

+1

C不認爲你的鍵盤設備有這種能力。如果您知道自己的事實,那麼您必須使用一些特定於平臺的功能來分享這些知識。 –

回答

5

有沒有C標準的方式來做你想做的事情(從鍵盤捕獲擊鍵而沒有用戶點擊輸入),你必須去平臺特定的。 <conio.h>應該有你需要在Windows上,你需要在Linux上curses得到這個。 (我懷疑curses也可以在Mac上工作,但不要引用我的說法)

在Windows上kbhit()不等待任何輸入,只是在您立即考試。

while(countdown++ <= 1000){ // give a second to hit something 
    if(b=kbhit())   // if the user presses a key 
     break;    // leave the loop early 
    Sleep(1);    // else, sleep for 1 ms and try again 
} 
if (b != 0)   // if something was pressed 
    printf("The key was %d\n", getch());