Touche entrée en c

vadim1303 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
je développe un programme en c qui permet l'activation/désactivation d'une alarme a 5 caractères.
C'est sous forme d'une machine à état et se déroule de la forme suivante :
je suis dans l'etat 1, si j'appui sur 'p' je passe dans l'etat 2 sinon je reste dans l'etat 1.
Mon problème est que lorsque je déroule le programme, il prend bien en compte l'appui sur 'p' mais il prend aussi en compte l'appui sur la touche entrée, donc je me retrouve tout le temps dans l'etat 1 de mon programme.
Comment eviter de prendre en compte la touche entrée ?
Merci beaucoup

A voir également:

2 réponses

Utilisateur anonyme
 
ça dépend de la façon dont tu récupères l'appui
0
vadim1303 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai essayé avec un scanf et un getchar, j'ai le meme soucis ...
0
Utilisateur anonyme
 
Si tu veux "attraper" les appuis sur les touches de façon événementielle, tu peux utiliser une librairie comme ncurses
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut,

ncurses ou PDCurses sont bien si tu veux faire un programme portable et si ces bibliothèques sont compatibles avec la ou les plateforme(s) visées, mais cela suppose d'installer une bibliothèque et d'apprendre à l'utiliser, l'initialiser correctement, gérer les ressources, etc.

Si tu es sous Windows et que tu veux juste récupérer l'appui d'une touche, tu peux faire plus simple en utilisant _getch()

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/getch-getwch?redirectedfrom=MSDN&view=msvc-160&viewFallbackFrom=vs-2019

en combinaison avec _kbhit(), cela te permet même de créer du code non bloquant faisant autre chose si une touche n'est pas pressée. Tu as un exemple là :

https://stackoverflow.com/questions/15603082/how-to-use-kbhit-and-getch-c-programming#answer-15603102

Autrement, toujours sous Windows, on peut utiliser l'API Windows et sa fonction ReadConsoleInput pour faire la même chose et bien plus :

https://docs.microsoft.com/en-us/windows/console/readconsoleinput?redirectedfrom=MSDN (doc)
https://docs.microsoft.com/en-us/windows/console/reading-input-buffer-events?redirectedfrom=MSDN (exemple de code)

Bien sûr, ces fonctions Windows ne sont pas portables et sont propres à Windows.

Mais pour un petit projet de simulation d'une alarme sous Windows, cela peut faire le job :-)

Si tu développes un vrai programme qui va piloter une vraie alarme, alors l'environnement d'exécution du code est crucial et va déterminer les API que tu pourras utiliser. Mais là, on n'en sait rien, car tu ne donnes pas d'infos véritablement là dessus.


Dal
0