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?
Version imprimable
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:
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; }
Ok, merci pour ta reponse !