¿Cómo usar getch () (de la biblioteca curses)?

Considere este código:

if(initscr() == NULL) ERROR("Cannot start ncurses mode.\n");

    keypad(stdscr, TRUE);

    cbreak();

    int reply = getch(); 

    if(reply == 'y')
        printw("yes!\n");
    else if(reply == 'n')
        printw("no!\n");
    else
        printw("invalid answer!\n");

    refresh();

    endwin();

Independientemente de la tecla que tecleo, el programa se cierra sin imprimir ningún mensaje.

¿Alguien puede explicar el comportamiento de este programa? Gracias por adelantado.

preguntado el 01 de julio de 12 a las 02:07

2 Respuestas

Llama printw() para imprimir uno de los tres mensajes, luego refresh() para que se muestre el mensaje. Hasta ahora tan bueno.

Entonces llama inmediatamente endwin(), que (dependiendo de la configuración de termcap/terminfo) probablemente borrará la pantalla.

Lo más probable es que el mensaje se muestre realmente; simplemente no permanece en la pantalla el tiempo suficiente para que puedas leerlo.

Intenta agregar un retraso u otro getch() llamar después de la refresh() llamada.

Respondido 01 Jul 12, 02:07

Si inserta un sueño (5) entre su actualización () y su endwin (), debería ver mejores resultados. Al menos, yo lo hago.

Respondido el 05 de Septiembre de 12 a las 18:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.