Bonjour,
je fais un scanf et l'utilisateur doit retourner un chiffre ( que ce soit long ou double...). Or, s'il tape une lettre, le programme se met à planter.
Comment puis-je l'empecher de planter et plutot reproposer un scanf?
Bonjour,
je fais un scanf et l'utilisateur doit retourner un chiffre ( que ce soit long ou double...). Or, s'il tape une lettre, le programme se met à planter.
Comment puis-je l'empecher de planter et plutot reproposer un scanf?
Il faut vider le buffer clavier jusqu'à la fin de la ligne taper.
Avec une fonction comme celle-ci par exemple:
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #include <stdio.h> /* Retourne 0 si OK, -1 si erreur. */ int fpurge(FILE *in) { int c; while((c=fgetc(in)) != '\n' && c!=EOF) { } return (c==EOF ? -1 : 0); } /* Exemple d'utilisation */ int main(void) { int nScanned = 0; int valeur; while(nScanned != 1) { puts("Entrer la valeur:"); nScanned = scanf("%d, &valeur"); fpurge(stdin); } printf("Vous avez entre: %d\n", valeur); return 0; }
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager