problème de lecture avec scanf quand je utilise fgets pour lire des données d'un utilisateur.
Salut , quelqu'un peut m'aider a résoudre ce problème . J'arrive a écrire dans un fichier mais la lecture n'est pas bon car j'ai utiliser des chaine avec espace .

Mon programme n'est pas encore terminer car je doit ajouter deux autre fonction modifier/supprimer des conseille pour eux si c'est possible
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//---------->structure<------------//
typedef struct
{ int   N;
  char  Nom[30];
  char  prenom[30];
  char  adresse1[40];
  char  adresse2[40];
  char CodePostal[5];
  char ville[34];
}client;
//------------->partie : Prototype <-------------//
void insere();
void afficher();
int Lire(char *chaine , int longueur);
void viderBuffer();
//------------->Fonction principale<-------------//
int main(void)
{   int choix , rep;  
  do
  { printf("MENU\n");
    printf("1-Insere un client\n");
    printf("2-afficher les client\n");
    printf("choix : ");
    scanf("%d",&choix);
    switch(choix)
    { case 1 :   insere(); break;
      case 2 : afficher(); break;
      default: printf("choix incorrecte\n");
    }
    printf("vous voulez faire une autre operation ? 1/0");
    printf("choix : ");
    scanf("%d",&rep);
  }while(rep==1);
    return 0;
}
//----------------->declaration de la structure<---------//
client c;
//-----------------> partie : Fonction <----------------//
    //------------->fonction eliminer \n <--------------//
int Lire(char *chaine , int longueur)
{
  char *positionEntree = NULL;
 
  if(fgets(chaine, longueur , stdin ) !=NULL )
  {
    positionEntree = strchr(chaine, '\n');
    if(positionEntree != NULL)
    {
       *positionEntree = '\0';
    }
    else
    {
      viderBuffer();
    }
    return 1;
  }
  else
  {
     viderBuffer();
     return 0;
  }
}
    //------------->fonction : si on dépasse le nombre de caractere max<------//
void viderBuffer()
{
   int c = 0;
   while(c != '\n' && c != EOF)
   {
      c = getchar();
   }
}
 
  //--------------->Fonction ajouter<----------------//
 
 
void insere()
{ int NbrCliAjouter = 0  ,i ;
   int NClientTotal=0;
  FILE *fic ;
 
  fic = fopen("client.txt","a");
 
    if(fic == NULL)
      { printf("Erreur du fichier client.txt");
        exit(1);
      }
 
 
  printf("Donnr le nombre de client a ajouter");
  scanf("%d",&NbrCliAjouter);
 
  NbrCliAjouter=NbrCliAjouter+NClientTotal;
 
  fflush(stdin);
 
  for(i=NClientTotal;i<NbrCliAjouter;i++)
  { printf("entrer le Nom :");
    Lire(c.Nom , 30);
    printf("entrer le prenom :");
    Lire(c.prenom , 30);
    printf("entrer le adresse1 : ");
    Lire(c.adresse1 , 40);
    printf("entrer le adresse2 : ");
    Lire(c.adresse2 , 40);
    printf("entrer le Code postale :");
    Lire(c.CodePostal , 5);
    printf("entrer la ville :");
    Lire(c.ville , 34);
 
   c.N = i+1;
 
   fprintf(fic,"%d %s %s %s %s %s %s\n",c.N,c.Nom,c.prenom,c.adresse1,c.adresse2,c.CodePostal,c.ville);
  }
 
  fclose(fic);
    }
//-------------------->fonction de afficher <-------------//
void afficher()
{FILE *fic;
 
    fic = fopen("client.txt","r");
      if(fic == NULL)
      { printf("Erreur du fichier client.txt");
      exit(1);
      }
  while(fscanf(fic,"%d %s %s %s %s %s %s\n",&c.N,c.Nom,c.prenom,c.adresse1,c.adresse2,c.CodePostal,c.ville) != EOF)
      {
        printf("N :%d\nNOM: %s\nPRENOM: %s\nDRESSE1: %s\nADRESSE2: %s\n CODEPOSTAL: %s\nVILLE: %s\n",c.N,c.Nom,c.prenom,c.adresse1,c.adresse2,c.CodePostal,c.ville) ;
      }
  fclose(fic);    
 
}