Fonction lire caractere sans taper entré

Signaler
Messages postés
241
Date d'inscription
dimanche 10 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
-
Messages postés
85
Date d'inscription
dimanche 13 juin 2004
Statut
Membre
Dernière intervention
30 décembre 2007
-
salut a ts ,

voila je cherche une fonction qui permetrais de lire 1 seul caractere et qui n'aurai pas besoin que l'utilisateur valide en tapant entré .

je pensai que j'arriverai a ce resultat avec ReadConsole (console,&nb,1,&i,NULL); mais je n'arrive a rien avec cette fonction , pourtant je met tt les param que demande msdn ms qd j'execute le prog il ne me demande pas de carac il se fini tt de suite .

si qq1 pouvait m'expliquer les param a founir a cette fonction pr quel fasse ce que je veux ou alors une autre fonction .

merci d'avance
@+

17 réponses

Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
11
getch() ou getche(), dans conio.h

char c;
printf("Entrez un caractere : ");
c = getche();
...

Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
241
Date d'inscription
dimanche 10 août 2003
Statut
Membre
Dernière intervention
16 juin 2010

merci

es-ce que c'est possible d'avoir l'implementation de conio.h ?
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
11
comment ca l'implementation de conio.h ?
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
241
Date d'inscription
dimanche 10 août 2003
Statut
Membre
Dernière intervention
16 juin 2010

ben ds econio.h ia que les declaration des fonctions getch ... . ia po un moyen d'obtenir l'implementation de ces fonctions .
Messages postés
85
Date d'inscription
dimanche 13 juin 2004
Statut
Membre
Dernière intervention
30 décembre 2007

Normalement au debut du projet tu tape #include <conio.h> et c'est tout ce qu'il y a faire.
Il me semble que le code est plutot comme ca;

char * lettre;
lettre = getch();

if (lettre == a)
{
option1();
};

++
Nepi

<Viva C++France>
Messages postés
85
Date d'inscription
dimanche 13 juin 2004
Statut
Membre
Dernière intervention
30 décembre 2007

j'ai fait une erreur;
ce n'est pas :

if(lettre == a)
mais
if(lettre == "a")

Voila
++
Nepi
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008
1
ou mieux : lettre=='a' vue que si mes souvenirs sont bon "a" est différent de 'a'. Dans le premier cas chaine une chaine de caractères terminée par NULL ('\0') et dans l'autre cas c'est le caractère a.

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008
1
je corrige mes fautes, moi y'en a bien parler la france :

ou mieux : lettre=='a' vue que si mes souvenirs sont bon "a" est différent de 'a'. Dans le premier cas c'est une chaine de caractères terminée par NULL ('\0') et dans l'autre cas c'est le caractère a.

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
exact, et normalement if(lettre == "a") ne doit pas compiler, "a" c'est l'adresse d'une chaine litterale
Messages postés
85
Date d'inscription
dimanche 13 juin 2004
Statut
Membre
Dernière intervention
30 décembre 2007

Non.
Je ne suis pas d'accord ( mais je n'ai pas forcement raison ;) ).
Lorsque on met ' ' c pour faire une comparaison ASCII. Je m'explique : avec glut, la touche retournee est sous forme INT.
Si on a pas envie de telecharger un tableau de tout les codes ASCII alors on met =='a' ...

par exemple (plus concret) :

if(touche==97){//a est appuyee;};
mais on peut remplacer par :
if(touche=='a'){//a est aussi appuyee;};

donc moi je conserve mon lettre=="a";

++
Nepi (j'espere que j'ai ete clair dans mon argumentation :)
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008
1
tres bonne remarque Djl et pour continuer dans ce sens on ne compare pas directement deux chaine de caractères cf strcmp() ou strcimp()...

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
nepi > on vient de dire que lettre=="a"; n'a aucun sens, "a" est une adresse, c'est 'a' qui est un entier
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008
1
c'est ce qu'on te dis, tu test si ta touche est le caractère 'a' et pas la chaine de caractères "a" et de toute façon tout est ASCII
'a'=97=0x61
"a"=97,Null=0x61,null

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
Messages postés
241
Date d'inscription
dimanche 10 août 2003
Statut
Membre
Dernière intervention
16 juin 2010

oulala

perso jpense que c'est plutôt lettre=='a' enfin bon

ce que je voulais savoir , c'est si il etait possible d'obtenir le code de la fonction getch () mais bon c'est po grave de tte facon ce que je voulai faire au debut marche avec cette fonction , c'etait juste pr info .
Messages postés
221
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
11 décembre 2008
1
Ben voila lettre=='a' et pas "a" pour enfoncer des portes ouvertes

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
a+
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
mat74 > regarde le fichier source conio.c dans la distrib de devcpp (win32)
Messages postés
85
Date d'inscription
dimanche 13 juin 2004
Statut
Membre
Dernière intervention
30 décembre 2007

Ok c'est vrai j'ai parlé sans reflechir. dsl ++ Nepi