Convertir le contenu d'un int en char
Résolu
kevdaig
Messages postés
16
Statut
Membre
-
kevdaig Messages postés 16 Statut Membre -
kevdaig Messages postés 16 Statut Membre -
Bonjour, j'essaie de me faire une petite boucle de validation de la saisie au clavier. Les choix sont de 1 à 5 ou le caractère q pour quitter. Voici ce que j'ai fait qui ne fonctionne pas:
int DemandeNiveau(void)
{
int Niveau = 0;
int NiveauMin = 1;
int NiveauMax = 5;
printf("Quel niveau (1-5) desirez-vous jouer?\n");
scanf("%d",&Niveau);
if(Niveau >= NiveauMin && Niveau <= NiveauMax)
{
printf("Vous avez choisis %d\n", Niveau);
}
else
{
printf("Vous avez entre la lettre %c pour quitter ... \n", (char)Niveau);
}
return Niveau;
}
Et comme de fait, si j'entre q au clavier, il n'y a rien dans la variable Niveau. Quelqu'un peut m'aider?
Merci
--
KevDaig
int DemandeNiveau(void)
{
int Niveau = 0;
int NiveauMin = 1;
int NiveauMax = 5;
printf("Quel niveau (1-5) desirez-vous jouer?\n");
scanf("%d",&Niveau);
if(Niveau >= NiveauMin && Niveau <= NiveauMax)
{
printf("Vous avez choisis %d\n", Niveau);
}
else
{
printf("Vous avez entre la lettre %c pour quitter ... \n", (char)Niveau);
}
return Niveau;
}
Et comme de fait, si j'entre q au clavier, il n'y a rien dans la variable Niveau. Quelqu'un peut m'aider?
Merci
--
KevDaig
4 réponses
-
Bonsoir,
if(Niveau >= NiveauMin && Niveau <= NiveauMax)
parce que ici tu essai de comparer un char a un int (ce qui n'est pas possible en C)
ce qui fait que normalement il ne devrait pas compiler -
En fait, si j'entre un caractère, la valeur de la variable Niveau reste à 0...
-
lisons la doc : https://fr.wikipedia.org/wiki/Scanf
ton %d te renvoie un int donc a la saisie de q c'est compliquer
en lisant un peu plus on peu comprendre que tu as besoin de :
scanf("%c",&in);
if (niveau == 'q'){}
else {int niveau = (int) in} -
Bonjour,
Deux façons :
1scanf("%d",&Niveau); ret=getchar(); if (Niveau...) { /*traitement*/ } else { if (ret=='q') { /*traitement*/ } }
Ou mieux : tu lis un buffer de caractères, tu utilises fgets().
Si c'est différent de "q", tu convertis avec l'aide de strtol() en nombre.
Cdlt,