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 -
[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
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:
- Touche entrée en c
- Jeux java itel touche - Télécharger - Jeux vidéo
- Touche remanente windows - Guide
- Quelle touche pour débloquer la souris ? - Guide
- Touche insert - Guide
- Touche verr num - Guide
2 réponses
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 ...
Utilisateur anonyme
Si tu veux "attraper" les appuis sur les touches de façon événementielle, tu peux utiliser une librairie comme ncurses
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
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