Bonjour,
Pour les besoins de mon programme j'essaye de créer une fonction de saisie sécurisé d'un entier.
Cependant je rencontre un probléme dans la condition de ma boucle do...while
Aprés quelque recherche sur le net, je ne trouve pas ma réponse.
J'aimerai pouvoir sortir de ma boucle lorsque "choix" :
- choix != 0
- choix = 100
- choix = 1000
- choix > 0 et choix < nbprod
J'ai essayer plusieurs variantes avec les Et et les OU mais cela ne fonctionne toujours pas.
Voici ma fonction de saisie sécurisée :
Et voici la boucle ou je rencontre le probléme :
Code : 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 int saisie_secu(char *chaine, int longueur) { char *pos = NULL; if (fgets(chaine, longueur, stdin) != NULL) { pos = strchr(chaine, '\n'); if (pos != NULL) { *pos = '\0'; } else { CLEAR_BUFFER(); } return 0; } else { CLEAR_BUFFER(); return 1; } }
Code : 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 int main() { int nbprod = 10; /* Pour exemple, car nbprod est variable mais ne depassera jamais 50 */ char cx[3]; int test,choix; do { do { test = saisie_secu(cx, 3); } while (test == 1); choix = atoi(cx); } while (choix == 0 || choix >= nbprod && choix != 100 && choix != 1000); }
Partager