2012-09-03 9 views
7

Escribí este sencillo programa en Windows. Como Windows tiene conio, funcionó bien.¿Cómo transfiero este programa de conio a curses?

#include <stdio.h> 
#include <conio.h> 

int main() 
{ 
    char input; 

    for(;;) 
    { 
     if(kbhit()) 
     { 
      input = getch(); 
      printf("%c", input); 
     } 
    } 
}  

Ahora quiero portarlo a Linux, y curses/ncurses parece la forma correcta de hacerlo. ¿Cómo puedo lograr lo mismo usando esas bibliotecas en lugar de conio?

Respuesta

9
#include <stdio.h> 
#include <ncurses.h> 

int main(int argc, char *argv) 
{ 
    char input; 

    initscr(); // entering ncurses mode 
    raw();  // CTRL-C and others do not generate signals 
    noecho(); // pressed symbols wont be printed to screen 
    cbreak(); // disable line buffering 
    while (1) { 
     erase(); 
     mvprintw(1,0, "Enter symbol, please"); 
     input = getch(); 
     mvprintw(2,0, "You have entered %c", input); 
     getch(); // press any key to continue 
    } 
    endwin(); // leaving ncurses mode  
    return 0; 
} 

Cuando la construcción de su programa no se olvide de enlazar con ncurses lib (-L) lncurses bandera para gcc

gcc -g -o sample sample.c -L lncurses 

Y here se puede ver kbhit aplicación() para Linux.

+0

Gracias, eso es exactamente lo que necesitaba. –

+0

Siempre eres bienvenido. –

0

Instale ncurses y solo incluya <ncurses.h>.

para instalar ncurses this será de ayuda.

+0

kbhit() no parece existir, o estoy haciendo algo mal? –

+0

No estoy seguro de que kbhit() esté implementado en ncurses. – Jeyaram

Cuestiones relacionadas