Bonjour,
j'ai un problème avec la fonction switch. je vous donne le code (il s'agit d'un traducteur anglais-français):
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 #include <stdio.h> #include <string.h> void ajouter(void) { .... } void rechercher(void) {....} int main(void) { char choix[3]; int erreur=1,logi=1,k,i; printf("traducteur anglais-français 1.0\n\n"); printf("1. ajouter un mot & sa traduction\n"); printf("2. rechercher une traduction\n"); printf("3. effacer un mot & sa traduction\n"); printf("4. remplacer une traduction\n"); printf("5. quitter\n\n"); while (logi==1) { while (erreur==1) { /* partie qui prend le choix */ printf("\tvotre choix : "); if (fgets (choix, sizeof choix, stdin) != NULL) { char *p = strchr (choix, '\n'); if (p){*p = 0;}} i=strtol(choix,NULL,0); if (i>0 && i<6) erreur=0; } /* partie qui traite le choix*/ switch (i){ case 1:{ajouter();printf("passe, et i vaut à ce moment : %d\n",i);} case 2:{ printf("\n i vaut alors : %d\n",i);rechercher();} case 3:logi=0; } /* retour du switch */ } /* retour du logi*/ return 0; }
le problème, c'est que lorsque je reviens de la fonction ajouter(), malgré un i=1, il lance la fonction rechercher(), et que quand je reviens de la fonction rechercher() , malgré un i=2, il fait logi=0, et quitte le programme.
je ne comprends pas. dois-je mettre un break ? sinon je remplace le switch par une série de if(i==) {}, mais j'aimerais comprendre le problème.
est-ce qu'il ne teste plus le i dans la boucle switch au retour d'une fonction ?
merci beaucoup.
Partager