Bonjour à tous, je crée un programme necessitant une boucle, pour l'interrompre l'utilisateur presse une touche puis a le choix entre quitter ou continuer. Pour l'interruption j'utilise kbhit(), pour le choix entre quitter et continuer j'utilise getchar(). Le problème est qu'au moment de la saisie avec getchar(), le caractère entré avec kbhit() est présent dans la saisie. Certes il suffit de l'effacer avec la touche d'effacement mais je voudrais tout de même que le programme soit le plus performant possible. J'ai essayé avec fflush(stdin) mais en vain et j'ai lu sur le SdZ que cette solution donnait un résultat indéfini.
Si tu utilises kbhit() (de conio), utilise getch() par la suite, et non getchar qui va attendre que tu appuies sur entrée)
getch te rend la main après l'appui d'une touche quelconque
Les deux sont liés :
Si tu appuies sur une touche, elle se met dans le buffer, donc avec kbhit, hop tu la vois.
Mais si ton jeu fait un gros calcul, que tu appuies, puis relaches une touche avant la fin du calcul, elle se met dans le buffer, et après, kbhit te dira "oui", car la touche est la, même si entre temps tu as relaché.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html