2011-07-22 141 views
5

我使用scanf()閱讀終端上用戶輸入的控制檯應用程序。 scanf會一直等到用戶點擊返回鍵才能閱讀。有沒有辦法在每次擊鍵時讀取用戶輸入?閱讀從控制檯輸入在OSX

回答

6

通常的方法是使用ncurses(的Mac端口)中的getch函數。

請注意,雖然getchar讀取單個字符,但它通常仍會進行緩衝讀取,因此您需要在返回之前按'返回'/'輸入'。

1
char c = getchar(); 

它應該做的伎倆。

+3

實際上,最好是把它讀作'int' – MByD

+2

爲什麼呢?他想要一個'char' - 和'int'需要更多的內存 –

+3

與詮釋,你可以檢查出的帶外值,另外,作爲局部變量聲明時,它可能會採取相同的地方。 – MByD

2

getch(),因爲它是類型從標準輸入返回的字符流。

+0

這非常不尋常 - 它不是默認行爲。 –

+0

-1 getchar也等待,直到用戶點擊返回鍵 – user411313