Aide en c

Fermé
Marine - 27 déc. 2018 à 22:26
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 2 janv. 2019 à 12:48
Bonjour, est ce que quelqu’un peut m'expliquer comment en cliquant sur une touche du clavier par exemple « z » on peut exécuter un programme en c. Merci pour votre aide.

2 réponses

Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
2 janv. 2019 à 09:21
Bonjour,
Pour cela il fait que tu remplace le %d ou %f habituelle de ton scanf par %c ( qui lit 1 caractère). Pour cela il faut au préalable que tu créé une varariable char dans tes déclarations. De plus si cette instruction est précéder d'autre inscription du style :"taper un entier"," taper un flottant " il faut que tu mette dans le scanf de cette instruction la %d%*c ( dans le cas d'un entier par exemple). Cela permet de nettoyer le buffer, sinon l'orque tu lancera l'instructin taper un caractère , le système considérera la touche entrée de l'instruction précédente comme u' caractère.
Cordialement.
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 2 janv. 2019 à 12:51
Salut Marine,

La solution de Hamster18 consistant à utiliser
scanf()
avec
%c
ne récupérera la touche
'z'
pressée qu'après que l’utilisateur ait pressé Entrée. Rien ne se passera de particulier lorsque la touche
'z'
sera pressée,
scanf()
bloquant l'exécution du programme tant que la saisie n'est pas validée car cette fonction travaille sur le flux stdin mis en tampon par ligne.

Si cela te convient alors, tu peux faire comme cela (ou simplement utiliser
getchar()
qui aura le même comportement). Tu devras presser successivement
'z'
et Entrée.

Si tu veux absolument que le programme C réagisse dès la pression d'une touche, il n'existe pas de fonction standard C permettant de le faire. Il faut passer par des méthodes et fonctions propres au système d'exploitation.

Pour une méthode simpliste sous Windows en mode console, tu peux utiliser
_getch()
(éventuellement dans une boucle avec
_kbhit()
pour un comportement non bloquant). Tu as de la doc avec un exemple là :

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/kbhit?view=msvc-160&viewFallbackFrom=vs-2017

En ce qui concerne le lancement de l'exécution d'un programme à partir du programme C, tu as une fonction standard du langage C
system()
, qui peut suffire pour un programme simpliste. Elle n'offre cependant que peu de contrôle, et il peut être préférable d'utiliser là aussi des solutions offertes par l'API du système d'exploitation pour faire des choses plus élaborées.


Dal
0