FICHIER EN C

Fermé
THEMAHG - 10 mars 2006 à 15:54
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 10 mars 2006 à 16:42
bonjour!
j'ai un problème avec mon programme, après la saisie des enregistrements, j'écrit sur le fichier, mais le problème et que quan j'affiche , je n vois que le dernier entrer. regarder une partie du code si dessous:
int encod_memb(FILE *fm,membre* pmemb,int nmemb)
{
long tmp=0,tab[50];
char touche[5],choiSex;
int retour,verifNum=0,i=0,n,boole=0;

fflush(stdin);

nmemb++;
printf("\n\tENCODER LE MEMBRE No %d",nmemb);
printf("\n\t_____________________\n");
fm=fopen("c:Mon fichier.dat","rb");
do
{
printf("Encoder le No de Licence (compris entre 1000 et 10.000) :");
fflush(stdin);
gets(touche);
tmp=atol(touche);
tab[nmemb-1]=tmp;// sauver le num dans un tableau
//verifNum=CheckNum(tmp,tab,nmemb);
if(tmp>1000 && tmp<10000)
{
boole=1;
}
else
{
boole=0;
}
}
while( verifNum==1);

if(boole==1)
{
pmemb->NumLicence=tmp;//atol(touche);
boole=1;
printf("Entrez le nom : ");
fflush(stdin);
gets(pmemb->nom);
printf("Entrez le prenom : ");
fflush(stdin);
gets(pmemb->prenom);

printf("Entrez le jour de la Date de Naissance : ");
fflush(stdin);
scanf("%d",&n);
pmemb->DateNaissance.Jour=n;

printf("Entrez le Mois de la Date de Naissance : ");
fflush(stdin);
scanf("%d",&n);
pmemb->DateNaissance.Mois=n;

printf("Entrez l'annee de la Date de Naissance : ");
fflush(stdin);
scanf("%d",&n);
pmemb->DateNaissance.Annee=n;

//CHOIX DU SEXE
printf("Choisissez le sexe : (M ou F)");
do
{
choiSex=toupper(getch());
}
while(choiSex!='M' && choiSex!='F' );
pmemb->Sexe=choiSex;
}
fwrite(pmemb,sizeof(membre),1,fm);
fseek(fm,(nmemb-1*sizeof(membre)),SEEK_END);
// booleen retourné pour verifier l'etat de l'encodge
if(boole==1)
{
retour=1;
}
else
{
retour=0;
}
//fclose(fm);
return retour;
}
A voir également:

1 réponse

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
10 mars 2006 à 16:42
je pense que le problème viens du fseek.
J'ai un peu de mal à voir ce qui est fait, mais j'ai l'impression que tu écris dans le fichier puis reviens en arrière: donc l'entrée precedente est effacé par la suivante. à l'avenir, utilise les balises < code> et </ code> pour pouvoir garder l'indentation de ton texte
0