Salut tout le monde.

Bon voila dans le cadre de mon cours de c, un petit exercice consiste a gerer une liste simplement chainée.

J'ai le petit probleme suivant sous linux:

lors du choix 2 (supression d'un element), une partie du code me semble "skipée" et le menu principale s'affiche.

voici le code:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <stdio.h>
//#include <conio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 20

struct liste{
    char nom[MAX];
    struct liste *PtrSvt;
};

int main(void){

    char Menu, Temp[MAX];
    struct liste *PtrNv, *PtrDeb,*PtrSav, *Ptr;

    PtrDeb=NULL;

    printf("bienvenue dans l exercice sur les listes chainees\n\n"
        "menu:\n\n"
        "1:   ajout dans la liste.\n"
        "2:   supression dans la liste\n"
        "3:   impression de la liste\n"
        "4:   fin\n"
        "\nFaites votre choix: ");
    scanf("%c", &Menu);
    fflush(stdin);
    
    for(;;){
    switch(Menu){
        case '1':   printf("entrez un nom : (zzzz pour terminer) ");
            fflush(stdin);
            gets(Temp);
                        
            while(strcmp(Temp,"zzzz")){
                PtrNv=(struct liste *)malloc(sizeof(struct liste));
                if(PtrNv != NULL){
                strcpy(PtrNv->nom,Temp);
                PtrNv->PtrSvt=PtrDeb;
                PtrDeb=PtrNv;
                }
                else
                printf("Plus de place menoire\n");

                printf("entrez un nom : (zzzz pour terminer) ");
                fflush(stdin);
                gets(Temp);
            }
            break;

        case '2':   printf("entrer le mot à suprimer: ");
            fflush(stdin);
            fgets(Temp, sizeof(Temp), stdin);
 
            //recherche du nom dans la liste
            Ptr=PtrDeb;
            while((Ptr!=NULL)&&(strcmp(Temp,Ptr->nom))){
                PtrSav=Ptr;
                Ptr=Ptr->PtrSvt;
            }
            
            //supression du chainon
            if(Ptr==NULL)
                printf("Ce nom n'existe pas!\n");
            else{
                if(Ptr==PtrDeb)
                PtrDeb=PtrDeb->PtrSvt;
                else
                PtrSav->PtrSvt=Ptr->PtrSvt;
            }
            free(Ptr);
            break;

        case '3':   if(PtrDeb==NULL)
                printf("liste vide\n");
            else{
                Ptr=PtrDeb;
                while(Ptr!=NULL){
                puts(Ptr->nom);
                Ptr=Ptr->PtrSvt;
                }
            }            
            printf("\n");
            break;

        case '4':   printf("Au revoir\n");
            exit(0);
            break;

        default:    printf("mauvais choix\n");
    }
    
    printf("menu:\n\n"
           "1:   ajout dans la liste.\n"
           "2:   supression dans la liste\n"
           "3:   impression de la liste\n"
           "4:   fin\n"
           "\nFaites votre choix: ");
    scanf("%c", &Menu);
    fflush(stdin);
    }
    //getch()
    return 0;
}
a savoir aussi qu si je le compile a l'ecole, borland, je n'ai aucune erreurs et le menu se s'affiche pas deux fois de suite.

si quelqu'un peu m'aider merci.