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

Signaler
Messages postés
44
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
31 octobre 2010
-
Messages postés
16
Date d'inscription
lundi 26 janvier 2009
Statut
Membre
Dernière intervention
14 septembre 2009
-
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

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
Dès qu'on tape sur une touche ça ferme le programme? Je trouve pas ca pratique pour un programme de chat

_____________________________________
Messages postés
44
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
31 octobre 2010

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!
Messages postés
16
Date d'inscription
lundi 26 janvier 2009
Statut
Membre
Dernière intervention
14 septembre 2009

Up, j'ai la même question...
Je cherche à détecter l'appui sur une touche de manière non bloquante svp...
Messages postés
112
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
5 novembre 2009

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
Messages postés
16
Date d'inscription
lundi 26 janvier 2009
Statut
Membre
Dernière intervention
14 septembre 2009

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
Messages postés
112
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
5 novembre 2009

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
Messages postés
16
Date d'inscription
lundi 26 janvier 2009
Statut
Membre
Dernière intervention
14 septembre 2009

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).
Messages postés
16
Date d'inscription
lundi 26 janvier 2009
Statut
Membre
Dernière intervention
14 septembre 2009

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é...)
Messages postés
16
Date d'inscription
lundi 26 janvier 2009
Statut
Membre
Dernière intervention
14 septembre 2009

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.