Modification de n'importe quel champ dans un fichier

Fermé
abir - 23 déc. 2014 à 12:02
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 23 déc. 2014 à 14:05
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
23 déc. 2014 à 14:05
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