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
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 */
Cependant, j'ai entendu parlé du fflush
On ma dit, avant de faire le fgets, de faire un
Pourquoi?

De plus, je voudrais, par exemple, on a :
donc je ne peut lire au maximum que 9 char
donc si l'utilisateur en entre plus, afin d'éviter tout problème, je vide le buffer d'entree (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 */
Or, si je met un purge(stdin)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
        int c;
while ((c = getchar()) != '\n' & c != EOF) ;
pour printf ne démarre pas tout de suite
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 );
(ceci n'est qu'un exemple
au 1er tour de boucle j'ai bien le printf
mais au second tour, il apparait "en retard" )

Merci d'avance
Nico