Controle Saisie clavier : entier
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:
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:
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:
1 2 3
|
int c;
while ((c = getchar()) != '\n' & c != EOF) ; |
pour printf ne démarre pas tout de suite
Code:
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