Il faut savoir que ce que tu veux faire (un chronomètre) ne peut pas se faire en C standard. En effet, les fonctions qui lisent sur le flux d'entre standard sont bloquantes et suspendent donc l'exécution. Il ne peux donc pas y avoir affichage et test du clavier en même temps.
Il y a deux façons de procéder :
- 2 threads : un pour l'affichage et un pour la surveillance bloquante du clavier. C'est la méthode moderne raisonnable. Il faut un système qui supporte les threads comme Windows (Win32) ou GNU/Linux.
- 1 seul thread, mais avec une boucle qui fait l'affichage et la surveillance du clavier non blocante. Cette méthode est la seule possible avec Turbo C++ sous DOS. C'est crade, mais ça marche
Pseudo-code (#2)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
next_time := time() + 1
fin := FALSE
DO
IF kbhit()
c := getch()
fin := c = ESC
ENDIF
now := time()
IF time() > next_time
afficher (now)
next_time := now + 1
ENDIF
WHILE NOT fin |
Partager