Modification de n'importe quel champ dans un fichier
abir
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
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;
}
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:
- Modification de n'importe quel champ dans un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Suivi de modification word - Guide
- Fichier rar - Guide
1 réponse
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.
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.