Bonjour. Alors voici mon probleme:
j'ai créé une structure client qui a cette forme :
struct client
{
int id;
char nom[30];
char prenom[30];
char adresse[50];
char cp[6];
char ville[50];
char pays[40];
char tel[14];
char fax[14];
char email[40];
};
jusque là, pas de problème.
J'ai ensuite créé une fonction
d'ajout d'un client au fichier "clients.dat"
voici la fonction qui renvoie 0 si erreur :
int majclient(int idclient, struct client newc)
{FILE *fichier;
FILE *ftemp;
int pos=0;
struct client temp;
clrscr();
if(fichier=fopen("d:\\clients.dat","rb")==NULL)
{fclose(fichier);
return(0);}
else
{fichier=fopen("d:\\clients.dat","rb");
/* fichier temporaire */
ftemp=fopen("d:\\temp.$$$","wb");
fseek(fichier,0,SEEK_SET);
fseek(ftemp,0,SEEK_SET);
if(idclient>1)
{while(pos<(idclient-1))
{fread(&temp,sizeof(struct client),1,fichier);
/* Ecrit les enregistrements avant le client a modifier */
fwrite(&temp,sizeof(struct client),1,ftemp); /*dans un fichier temporaire*/
pos++;}
}
/* effectue la MAJ */
fwrite(&newc,sizeof(newc),1,ftemp);
/*positionnement juste apres la MAJ*/
fseek(fichier,(idclient)*sizeof(struct client),SEEK_SET);
/* ecriture des enregistrements suivants */
if(idclient<lastid())
{while(!feof(fichier))
{fread(&temp,sizeof(struct client),1,fichier);
fwrite(&temp,sizeof(struct client),1,ftemp);}
}
/* fermeture de tous les fichiers */
fcloseall();
system("del d:\\clients.dat");
/* copie du contenu du fichier temporairedans le fichier clients.dat */
fichier=fopen("d:\\clients.dat","wb");
ftemp=fopen("d:\\temp.$$$","rb");
fseek(fichier,0,SEEK_SET);
fseek(ftemp,0,SEEK_SET);
while(!feof(ftemp))
{fread(&temp,sizeof(struct client),1,ftemp);
fwrite(&temp,sizeof(struct client),1,fichier);}
/* fermeture de tous les fichiers */
fcloseall();
return(1);
}
}
ALORS VOILA ENFIN MON PROBLEME :
Comment supprimer par exemple le 3eme client?
J'ai tout essayé, enfin je penses !
PLEASE!!