Bonjour,
Je voudrais des éclaircissements concernant la contrôle de saisie en C.
Je dois faire une contrôle de saisie, donc j'utilise le fgets
Cependant, j'ai entendu parlé du fflush
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 printf("Entier : "); fgets(temp, sizeof(temp), 10); /* appel a strtol et verification sur char **endptr */
On ma dit, avant de faire le fgets, de faire un
Pourquoi?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 fflush(stdout);
De plus, je voudrais, par exemple, on a :
donc je ne peut lire au maximum que 9 char
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 char temp[10];
donc si l'utilisateur en entre plus, afin d'éviter tout problème, je vide le buffer d'entree (stdin)
Or, si je met un purge(stdin)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 while( .. ){ printf(".."); fgets(temp, &endptr, 10); /* strlol */ /* control de strtol qui me dit si oui ou non c'est un entier */ /* si non on reprend la boucle */
pour printf ne démarre pas tout de suite
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int c; while ((c = getchar()) != '\n' & c != EOF) ;
(ceci n'est qu'un exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 do { printf("Entrez un entier : "); fgets(s, sizeof(s), stdin); int c; while ((c = getchar()) != '\n' & c != EOF) ; } while ( !etatOk );
au 1er tour de boucle j'ai bien le printf
mais au second tour, il apparait "en retard" )
Merci d'avance
Nico
Partager