Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C > boucle qui boucle > Lecture du sujet

boucle qui boucle

condition semble correcte

Vous devez être inscrit pour pouvoir poster des messages

Page : 1 
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : 1 
Hors ligne anonyme # Posté le 29/11/2005 à 16:40:04
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.
Hors ligne rotoclap # Posté le 29/11/2005 à 16:45:36
Secrétaire intérim du SdZ
Avatar
Admins
Au pire tu demandes un caractère, et pas un nombre dans ton scanf et tu fais la conversion apres

Code : Bash
1
2
3
4
5
6
7
ROFL:ROFL:ROFL:ROFL
         _^___
 L    __/   []\
LOL===_        \
 L     \________]
         I   I
        -------/
 
Hors ligne anonyme # Posté le 29/11/2005 à 16:48:13
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?
Hors ligne rz0 # Posté le 29/11/2005 à 17:03:28
meuh
Avatar
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...
 
Hors ligne Fino # Posté le 30/11/2005 à 23:14:54
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
 
Hors ligne iPoulet # Posté le 01/12/2005 à 07:32:06
Avatar
Groupe : Bannis
Citation : rz0
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...

Je crains que ça ne soit dur de les faire oublier scanf ici :euh:

Étoilé
« Eĉ guto malgranda, konstante frapante, traboras la monton granitan »
 
Hors ligne rz0 # Posté le 01/12/2005 à 07:33:54
meuh
Avatar
Groupe : Membres

Retour au forum "Langage C" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 468 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0415s (0.0115s)