Modification de n'importe quel champ dans un fichier

abir -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Qui pourra m'aider à ecrire une fonction qui permet de modifier n'importe quel champ dans un fichier .cette fonction retourne 1 si la modfication est bien effectuée et 0 sinn


Voici mn essai qui ne marche pas :/
int modification(FILE *fp,int matr)
{
struct liste *first,*p=first;
int choix2,nvjour,nvannee,nvmois;
char nvSexe,nvNomPrenom[20];
float nvSalaire;

while(p!=NULL)
{
while(Recherche(p,matr)==0)
{


printf(" \n donnez la matricule de l'employe que vous voulez modifier : \n");
scanf("%d",&matr);
};

do
{
printf(" \n pour modifier le Nom et le Prenom de l'employe,taper 0 \n" );
printf(" \n pour modifier la Date de Naissance de l'employe,taper 1 \n" );
printf(" \n pour modifier le Salaire de l'employe,taper 2 \n" );
printf(" \n pour modifier le Sexe de l'employe,taper 3 \n" );
scanf("%d",&choix2);
}while(choix2>3);
switch(choix2)
{
case 0:
printf("entrer le nouveau Nom et Prenom de l'employe %d",p->matricule);
scanf("%s",nvNomPrenom);
strcpy(p->Nomprenom,nvNomPrenom);

printf("La modification s'est bien effectuee");
fprintf(fp,"%s\n",p->Nomprenom);
break;
case 1:
printf("entrer le nouveau jour de la date d'entrée de l'employé %d",p->matricule);
scanf("%d",nvjour);
p->date.jours=nvjour;

fprintf(fp,"%s\n", p->date.jours);

printf("entrer le nouveau mois de la date d'entrée de l'employé %d",p->matricule);
scanf("%d",nvmois);
fprintf(fp,"%s\n",(p->date).mois=nvmois);
printf("entrer le nouveau mois de la date d'entrée de l'employé %d",p->matricule);
scanf("%d",nvmois);
fprintf(fp,"%s\n",p->date.annee=nvannee);


printf("La modification s'est bien effectuee");break;
case 2:
printf("entrer le nouveau Salaire de l'employe %d",p->matricule);
scanf("%s",nvSalaire);
fprintf(fp,"%s\n",p->salaire=nvSalaire);
printf("La modification s'est bien effectuee");
case 3:
do
{
printf("donner le nouveau sexe de l'employe %d",p->matricule);
scanf("%c",&nvSexe);
} while((nvSexe!='M')&&(nvSexe!='F'));
fprintf(fp,"%s\n",p->sexe=nvSexe);
printf("La modification s'est bien effectuee");

}
}

return 0;
}
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Pour modifier une valeur dans un fichier, il faut en créer un autre, modifier le champ voulu et renommer le fichier en écrasant l'ancien.

Sinon, pourquoi ne pas utiliser la fonction fwrite() pour écrire directement la structure plutôt qu'écrire champ par champ ? Ca sera plus simple et plus propre.
0