mador | RE,
voila j'ai un tableau d'element de type struct personne:
Code :
- typedef struct personne{
- char nom[max];
- char prenom[max];
- unsigned long tel;
- int cp;
- }personne;
- personne *tab;
|
J'ai une fonction d'ecriture:
Code :
- # define repertoire "./repertoire" //definition fichier repertoire
- int ecrit(){
- FILE *fichier;
- fichier= fopen ("repertoire", "w" ) ; //ouverture de repertoire en mode "write"
- if (fichier== NULL) //test d'ouverture
- {
- printf ("impossible de creer le fichier repertoire\n" );
- return(-1);
- }
- if(fwrite(tab,sizeof(struct personne ),pMax,fichier)!=pMax) //ecriture dans le repertoire
- {
- fclose(fichier);
- return(-1);
- }
- fclose (fichier);
|
et une fonction de lecture:
Code :
- int lecture(){
- FILE *fichier;
- fichier = fopen ("repertoire", "r" );
- if (fichier==NULL) //test d'ouverture en mode "read"
- {
- fichier =fopen ("repertoire","w" ); //creation du fichier
- if (fichier=NULL) //test ouvertue en mode "write"
- {
- printf("impossible d'ouvrir le fichier repertoire\n" );
- return (-1);
- }
- else
- {
- printf("Le fichier repertoire a été créé\n" );
- return (1);
- }
- }
- else
- {
- fread(tab,sizeof(struct personne),pMax,fichier); //Lecture du fichier
- fclose (fichier);
- }
- }
|
Et je voudrais pouvoir supprimer un element du tableau:
Code :
- int Enlever_Personne(){
- int temp=0;
- char name[max];
- char surname[max];
- lecture();
- printf("Entrer le nom de la personne a supprimer: \n" );
- scanf("%s",surname);
- printf("Entrer le prenom: \n" );
- scanf("%s",name);
- for (i=0;i<pMax;i++)
- {
- if ( (strcmp(surname,tab[i].nom)==0 && (strcmp(name,tab[i].prenom)==0))) //comparaison
- {
- realloc(tab,sizeof(struct personne)); //reallocation de l'espace memoire pointé par tab
- (personne*)free(tab); //liberation de la memoire pointé par tab
-
- temp++;
- }
- }
- if (temp==1)
- {
- fopen("repertoire","w" );
- if(remove (repertoire)!=0) //suppression du fichier repertoire
- {
- printf("echec remove\n" );
- return (-1);
- }
- ecrit(); //réécriture du fichier
- printf("Le contact a été supprimé.\n" );
- }
- else {printf("la personne ne figure pas dans le repertoire.\n" );}
- }
|
Mais ça ne marche pas très très bien!
Cette derniere ne me supprime que le nom ou me met des symbole a la place des nom de toute les personne figurant dans le repertoire.
|