getch() è una funzione che restituisce un carattere ricevuto in input: è abbastanza comoda, ma non troppo portabile. Ho trovato questa reimplementazione in giro su Internet, e funziona. Con un po’ di accortezza, e usando una semplice direttiva di pre-processore, si può anche evitare di fare dei controlli di conformità nel momento in cui servirebbe usarla. Questo pezzetto di codice è tanto più importante se si pensa l’unica alternativa praticabile sarebbe quella di scrivere un’applicazione usando la libreria curses, che la prevede – ma solo all’interno di un programma che ne faccia uso interamente.
#include <stdio .h>
#include <unistd .h>
#include <termios .h>
int unix_getch()
{
struct termios oldt,newt;
int ch;
tcgetattr( STDIN_FILENO, &oldt );
newt = oldt;
newt.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
return ch;
}
[da qui]














Interessante! anchio in questi giorni mi son trovato a “giocare” con questa funziona, ho scritto proprio ora un post su getch() in python