2011-07-22 13 views
5

Estoy usando scanf() para leer la entrada del usuario en el terminal en una aplicación de consola. scanf espera hasta que el usuario presione la tecla de retorno para leer. ¿Hay alguna manera de leer la entrada del usuario en cada pulsación de tecla?Entrada de lectura desde la consola en OSX

Respuesta

6

La forma habitual sería utilizar la función getch desde (el puerto Mac) ncurses.

Nótese que si bien getchar lee un solo carácter, todavía normalmente no amortiguada lectura, por lo que hay que pulsar 'retorno'/'entrar' antes de que regresará.

1
char c = getchar(); 

Se debe hacer el truco.

+3

en realidad, es mejor leerlo como 'int' – MByD

+2

¿por qué? él quiere un 'char' - y un' int' toma más memoria –

+3

con int usted puede verificar los valores fuera de banda, también, cuando se declara como variable local, probablemente tome el mismo lugar. – MByD

2

getch() devuelve la secuencia de caracteres de stdin tal como está escrita.

+0

Eso sería muy inusual, no es el comportamiento predeterminado. –

+0

-1 getchar también espera hasta que el usuario pulse la tecla de retorno – user411313

Cuestiones relacionadas