Bonjour

je rencontre un petit probleme avec mon code :

si on tape le mot de passe , le menu s'affiche en double , j'aimerai savoir pourquoi

merci

Nom : 571599Sanstitre1.jpg
Affichages : 627
Taille : 72,4 Ko

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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
//On appelle les libraires du C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
//-----------------
 
//On défini le nombre de caratéres que l'on peux saisir dans notre tableau
#define S_Produits (15)
#define S_Quantite (60)
 
//Structure pour le Nom du produit et sa quantité qu'il ya en stock .
typedef struct
{
    char nomProduits[S_Produits+1];
    char nombreProduits[S_Quantite+1];
} Fiche_Stock;
//-----------------
 
//Fonction qui permetant de saisir une chaine enlevant le '\'
void myGets(char*prompt,char*chaine,unsigned short size )
{
    char *pt;
    fputs(prompt,stdout);
    fgets(chaine,size,stdin);
    if((pt=strchr(chaine,'\n'))!=NULL)
        *pt='\0';
 
}
//Fonction pour  le menu
unsigned short menu()
{
    char saisie[100];
    unsigned short choix;
    while(1)
    {
        printf("\t****************** Bienvenu Au Grand Bazar ******************\n\n\n");
        printf("1 : Ouvrir un fichier de stockage\n");
        printf("2 : Ajouter un produit\n");
        printf("3 : Voir le stock \n");
        printf("0 :Quitter\n");
        printf("\nVotre choix : ");
        fflush(stdout);
        fgets(saisie,100,stdin);
        if (sscanf(saisie, "%hu", &choix) == 1 && choix >= 0 && choix <= 3) break;
        printf("Choix incorrect - Recommencez !!!\n");
 
    }
 
    return choix;
 
}
//Fonction pour ouvrir un fichier
FILE *ouvrir_fichier()
{
    char nom[100];
    char *pt;
    printf("**Ouverture du fichier**\n\n");
    myGets("Saisir un nom pour le fichier: ", nom, 100);
 
    // Vérification extension ".txt" n'existe pas
    if ((pt=strrchr(nom, '.')) == NULL || strcmp(pt, ".txt") != 0)
        strcat(nom,".txt");// on rajoute l'extension .txt au fichier
 
    return fopen(nom, "a+");
}
//Fonction pour ajouter un produit à la liste
void ajouterNom(FILE *fp)
{
    Fiche_Stock p;
 
    printf("Ajouter nom\n");
    myGets("Entrer un produit :", p.nomProduits, S_Produits);
    myGets("Entrer la quantite :", p.nombreProduits, S_Quantite);
    fprintf(fp, "%s:%s:%s\n", p.nomProduits, p.nombreProduits);
    fflush(fp);
    printf("enregistrement %s:%s:%s ok\n", p.nomProduits, p.nombreProduits);
}
//Fonction pour affficher le stock
void listerNom(FILE *fp)
{
    Fiche_Stock p;
    long pos;
    char ligne[100];
 
    // Récupération position courante
    pos=ftell(fp);
 
    // Positionnement au début du fichier
    fseek(fp, 0L, SEEK_SET);
 
    // Lecture fichier
    while (fgets(ligne, 100, fp) != NULL)
    {
        printf(ligne);
    }
 
    // Repositionnement à la position initiale du fichier
    fseek(fp, pos, SEEK_SET);
}
//Fonction pour afficher le menu
void afficher_menu()
{
    FILE *fp=NULL;
    unsigned short choix;
       while((choix=menu()) != 0)
    {
        switch (choix)
        {
            case 1:
                fp=ouvrir_fichier();
                if (fp == NULL)
                    fprintf(stderr, "Erreur ouverture fichier\n");
                break;
            case 2:
                if (fp == NULL)
                {
                    fprintf(stderr, "Il faut d'abord ouvrir le fichier\n");
                    break;
                }
                ajouterNom(fp);
                break;
            case 3:
                if (fp == NULL)
                {
                    fprintf(stderr, "Il faut d'abord ouvrir le fichier\n");
                    break;
                }
                listerNom(fp);
                break;
            case 0:
                if (fp != NULL) fclose(fp);
        }
    }
 
     }
 
 
 
 
//Programme principal
 
int main()
{
 
//Mise en place d'un systeme de mot de passe
    int motpasse =77;
    int code;
 
do
    {
        printf("veuillez saisir le code : ");
        scanf("%d",&code);
 
        if(code==motpasse)
        {
            system("cls");
            afficher_menu();
 
        }
        else
        {
            printf("Erreur de code !!!");
        }
 
 
 
    }
    while(code !=motpasse);
 
        system("pause");
 
        return 0;
    }