2012-09-03 13 views
7

Ho scritto questo semplice programma su Windows. Poiché Windows ha conio, ha funzionato bene.Come porto questo programma da conio a curses?

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

int main() 
{ 
    char input; 

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

Ora voglio portarlo su Linux, e curses/ncurses sembra il modo giusto per farlo. Come potrei ottenere lo stesso usando quelle librerie al posto di conio?

risposta

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; 
} 

Quando si costruisce il vostro programma non dimenticate di collegamento con ncurses lib (-L) lncurses bandiera a GCC

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

E here potete vedere kbhit) implementazione (per Linux.

+0

Grazie, è esattamente ciò di cui avevo bisogno. –

+0

Sei sempre il benvenuto. –

0

Installare le ncurses e includere solo <ncurses.h>.

per l'installazione di ncurses this sarà di aiuto.

+0

kbhit() non sembra esistere o sto facendo qualcosa di sbagliato? –

+0

Non sono sicuro che kbhit() sia implementato in ncurses. – Jeyaram

Problemi correlati