Groupe :
|
dans une boucle de controle, je veu obliger l utilisateur à rentrer un nombre compris entre 0 et 9. j'utilise la condition suivante
Code : C
scanf ("%d",&variable );
while(variable< 0 || variable ]> 9)/*boucle qui controle que les éléments saisis sont bien compris entre 0 et 9*/
{
printf("valeur comprise entre 1 et 9!! Introduisez une nouvelle valeur: ";
fflush (stdin );
scanf ("%d",&variable );
}
tant que l utilisateur ne rentre que des nombres, je n'ai aucun problème avec cette condition. mais si jamais l utilisateur entre une lettre ou un autre caractère, mon programme plante. (il passe au travers de cette boucle mais aussi à travers des 3 autres boucles qui suivent meme si les conditions ne portent pas sur la même chose. bref, j'aimerais pouvoir controler que c est bien un nombre que l utilisateur saisi.
|
Secrétaire intérim du SdZ


|
Au pire tu demandes un caractère, et pas un nombre dans ton scanf et tu fais la conversion apres
Code : Bash1
2
3
4
5
6
7 | ROFL:ROFL:ROFL:ROFL
_^___
L __/ []\
LOL===_ \
L \________]
I I
-------/
|
|
Groupe :
|
j'y ai pensé mais j'aime pas trop ça...y doit y avoir moyen de s'en sortir sans passer par des char, non?
|
meuh
 Groupe : Membres
|
Euh, le plus propre est en général d'utiliser fgets pour lire une chaîne puis strtol ou atoi pour convertir en entier.
scanf est moisi et très déconseillé pour tout le monde du fait qu'il laisse trainer les valeurs dans le buffer ce qui est très chiant...
Tout code que je poste est placé sous licence ISC, sauf mention contraire.
|
Groupe : Membres
|
T'as essayé de mettre la fonction isdigit dans ton while.
Tu fais:
Code : C
while(isdigit(variable))
Je crois que isdigit est dans stdlib.h et ca te permet de tester si t'as variable est un chiffre(entre 0 et 9).
Fino
|
 Groupe : Bannis
|
Citation : rz0Euh, le plus propre est en général d'utiliser fgets pour lire une chaîne puis strtol ou atoi pour convertir en entier.
scanf est moisi et très déconseillé pour tout le monde du fait qu'il laisse trainer les valeurs dans le buffer ce qui est très chiant...
Je crains que ça ne soit dur de les faire oublier scanf ici
Étoilé
« Eĉ guto malgranda, konstante frapante, traboras la monton granitan »
|
meuh
 Groupe : Membres
|
Je le crains aussi.
Au passage, isdigit est dans ctype.h
Tout code que je poste est placé sous licence ISC, sauf mention contraire.
|