Tecla premida sem ENTER - kbhit
Muitos questionam-se sobre como ler uma tecla premida pelo utilizador durante um ciclo sem que este faça pausa. Os métodos habituais, nomeadamente o getchar (ou o getch da biblioteca conio.h), forçarão o ciclo a parar.
Isto torna-se fácil de se entender quando temos um ciclo que realiza um processo mais complexo e moroso, e queremos que, se o utilizador desista do processo, prima ESC e o processo termine - evita-se que o utilizador ou tenha de esperar até ao fim ou tenha de fechar e voltar a iniciar a aplicação.
O código que nos indica que o utilizador premiu uma tecla durante um processo, sem necessidade de pausa do programa, é o kbhit. Diremos em português "se uma tecla foi premida, então faz <comandos>". Em C:
if (kbhit()) { comandos; }
Aplicando directamente no exemplo do ciclo, que se interrompe em caso de ESC:
char c = 0 while (condição_de_paragem_normal) { comandos; if ( kbhit() ) { c = getch(); if (c == 27) { printf("Processo interrompido.\n"); break; } } }