Quitter programme console si appui touche... [C]

matad0r Messages postés 44 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 31 octobre 2010 - 10 juin 2009 à 16:49
Sangfeust Messages postés 16 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 14 septembre 2009 - 27 juil. 2009 à 16:55
Bonjour!
Alors voilà, j'ai un petit chat console en C et j'aimerai que lorsque l'utilisateur appui sur "Echap" ou une autre touche, le programme se ferme (A n'importe quel moment) mais je ne trouve pas de commande pour ça.
Une idée?

Merci d'avance!

9 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
10 juin 2009 à 16:57
Dès qu'on tape sur une touche ça ferme le programme? Je trouve pas ca pratique pour un programme de chat

_____________________________________
0
matad0r Messages postés 44 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 31 octobre 2010
10 juin 2009 à 19:10
xD Nan.
Ca aurait été un peu c*n...
Je voudrais que, par exemple, lorsqu'on appui sur UNE touche (genre Echap, Tab etc.) le programme se quitte.
Voilà, c'est plus plausible!
0
Sangfeust Messages postés 16 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 14 septembre 2009
27 juil. 2009 à 11:58
Up, j'ai la même question...
Je cherche à détecter l'appui sur une touche de manière non bloquante svp...
0
Kotomine Messages postés 112 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 5 novembre 2009
27 juil. 2009 à 14:24
En C, ca dépend trop de la machine, et de l'OS.
En effet, par défaut, le standard posix veut que les stdio soient bufferizées (e.g, ça vient d'un bloc, logiquement quand on appuie sur ENTREE)

Donc, si l'utilisateur appuies sur ESCHAP, tu verras le caractère 27 après un appui sur ENTREE (fort peu pratique).

Sinon, pour une lecture non blocante, je vous conseille de vous renseigner sur la fonction select.




; I'm just keeping the hopeless cross to increase the meaninglessness
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sangfeust Messages postés 16 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 14 septembre 2009
27 juil. 2009 à 15:40
Alors je précise.

Mon programme doit être multi plateforme... Je programme en C, pour la simple raison que je maitrise plus le C que le C++.

Pour l'instant j'utilise la fonction kbhit()...

Donc en gros j'ai:

...
do
{
if(kbhit()) break;
/* Mon programme */

}while(1);

J'ai trouvé cette fonction sur le net ...

Malheureusement lorsque j'appuie sur une touche mon programme plante. Heureusement je ne perd pas de données mais bon c'est pas trop pratique.

Voilà.
Si une idée vous viens...

Merci
0
Kotomine Messages postés 112 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 5 novembre 2009
27 juil. 2009 à 15:51
Euh je t'arrête tout de suite;

kbhit n'existe que sous windows (avec conio.h , non ?)
J'ai trouvé ça
http://cboard.cprogramming.com/c-programming/63166-kbhit-linux.html

j'espère que ça pourra t'aider


; I'm just keeping the hopeless cross to increase the meaninglessness
0
Sangfeust Messages postés 16 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 14 septembre 2009
27 juil. 2009 à 16:18
Arf j'ai une petite question cela fait quelques temps que je cherche le fichier la librairie termios.h...
Où pourrais je la télécharger svp???
Car je crois que j'avais déjà tenté de piquer ce code mais ne possédant pas termios.h...

Je travaille sous codeblock 2.8.10 (je crois).
0
Sangfeust Messages postés 16 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 14 septembre 2009
27 juil. 2009 à 16:39
bon après recherche je suis tombé sur ça ...
Tapez le texte de l'url ici.

Donc en gros si cela utilise termios.h et bien je l'ai dans le baba comme qui dirait.

donc ...
Bon après mure réflexion, j'oublie le portage, je reste toujours sur du windows... Si cela me facilite la vie je préfère. Encore que je n'ai pas vraiment le choix.

(pas la peine de répondre des "PFFFFFFFFFF windows c'est pour les nul ou autre joyeuseté...)
0
Sangfeust Messages postés 16 Date d'inscription lundi 26 janvier 2009 Statut Membre Dernière intervention 14 septembre 2009
27 juil. 2009 à 16:55
Oups je ne peux pas éditer mes messages...

Bon pour ce qui est de conio.h, moi j'ai trouvé que ça existait sur Linux et sur Windows, mais rien n'est moins sure.

Et pour kbhit() ben il me semble que cela existe aussi sous linux, mais là à vérifier.

Voilà donc me reste juste à trouver pourquoi mon programme plante à la sortie de la boucle.
0