¿Cómo obtener un personaje de stdin sin esperar a que el usuario lo ponga? [duplicar
Esta pregunta ya tiene una respuesta aquí:
Cómo evitar presionar enter con getchar () 10 respuestasEstoy escribiendo un programa en C que imprime algo en la terminal usando ncurses. Debería dejar de imprimir cuando el usuario presione 's' y continuar nuevamente cuando presione 's'. ¿Cómo puedo leer una tecla de entrada sin esperar que el usuario presione la tecla?
Lo intentégetch()
ygetchar()
pero esperan hasta que se presione una tecla ...
Edita
Este es mi código:
int main(void)
{
initscr(); /* Start curses mode */
refresh(); /* Print it on to the real screen */
int i = 0, j = 0;
int state = 0;
while (1)
{
cbreak();
int c = getch(); /* Wait for user input */
switch (c)
{
case 'q':
endwin();
return 0;
case 'c':
state = 1;
break;
case 's':
state = 0;
break;
default:
state = 1;
break;
}
if(state)
{
move(i, j);
i++;
j++;
printf("a");
refresh();
}
}
nocbreak();
return 0;
}
EDIT 2 Esto funciona bien. Obtuve 100 puntos:)
#include <stdio.h>
#include <stdlib.h>
#include <curses.h>
int main(void)
{
initscr();
noecho();
cbreak(); // don't interrupt for user input
timeout(500); // wait 500ms for key press
int c = 0; // command: [c|q|s]
int s = 1; // state: 1= print, 0= don't print ;-)
int i = 0, j = 0;
while (c != 'q')
{
int c = getch();
switch (c)
{
case 'q':
endwin();
return 0;
case 'c':
s = 1;
break;
case 's':
s = 0;
break;
default:
break;
}
if (s)
{
move(i, j);
printw("a");
i++;
j++;
}
}
endwin();
nocbreak();
return 0;
}