Detection non bloquante de frappe clavier.

une fonction pratique pour détecter l'appui sur une touche sans bloquer le programme.

kbhit,getch

Voir version :

Pas de dépendances

Télécharger :

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

int main()
{
    int i=0;
    printf("Appuyez sur une touche pour quitter. Moi pendant ce temps, je compte...\n");
    while(!kbhit())
    {
        printf("%d\r",i++);
    }
    getch();
    printf("Fini !\n");
    return 0;
}




Commentaires

	Cette fonction kbhit() est bien pratique. 
	Vous savez, quand vous appuyez sur une touche du clavier, elle se met dans une "file d'attente", comme une file d'attente au cinoche...
	Des fonctions comme scanf, getchar, ou getch permettent de traiter cette file d'attente : on fait passer le client suivant.

	Quand vous avez un programme qui bloque et que vous appuyez sur plusieurs touches, vous entendez un BIP venant de l'ordi. Cela veut dire que la file d'attente
	est saturée et que votre touche ne sera pas prise en compte. C'est le cas quand un programme ne dépile(on dirait plutot défile, mais bon)
	pas la file d'attente (il est coincé par exemple)

	Bref, la fonction kbhit renvoie 1 si il y a au moins une touche en attente, 0 sinon.

	On comprend donc le while.
	J'ai mis un getch en dessous pour être propre. getch traite une touche de la file d'attente.

	Et pendant ce temps la, le programme tourne. scanf ou getchar auraient bloqué le programme. 


Laissez un commentaire / post a comment