Problème de déplacement à la fin d'un fichier binaire
bernidupont
Messages postés21Date d'inscriptionsamedi 1 décembre 2012StatutMembreDernière intervention 1 décembre 2012
-
16 févr. 2009 à 06:45
bernidupont
Messages postés21Date d'inscriptionsamedi 1 décembre 2012StatutMembreDernière intervention 1 décembre 2012
-
16 févr. 2009 à 18:05
Bonsoir,
j'ai essayé de résoudre mon problème, mais je n'ai pas su trouver de solution.
Mon problème est le suivant:
j'ai un fichier binaire dans lequel est enregistré la structure qui est la suivante:
typedef struct
{
long int clé;
char nom[31];
int groupe;
} ELEVE;
lorsque j'ouvre le fichier binaire pour lui rajouter un autre ELEVE ,et que je le lit pour l'afficher,
ça m'affiche seulement la dernière structure ELEVE enregistré!
voici la partie de mon code qui permet d'ecrire sur le fichier binaire:
// on ouvre le fichier binaire en écriture
FILE * archbin = fopen ( "eleves.dat","wb");
// on déplace le pointeur à la fin du fichier
if (!fseek(archbin,0L,SEEK_END)) {
if (archbin) {
if ( fwrite(&a,sizeof(ELEVE),1,archbin) )
printf("eleve enregistree! \n\n");
else printf ("ERREUR : ecriture impossible! \n");
}
else printf ("ERREUR : ouverture impossible! \n");
}
else printf ("ERREUR : déplacement impossible!");
Pouvez vous me mettre sur la voie svp, ou me dire d'ou pourrait bien venir le problème?
D'avance merci.
Berni.
A voir également:
Problème de déplacement à la fin d'un fichier binaire
ed73
Messages postés276Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention15 avril 20132 16 févr. 2009 à 09:45
En ouvrant ton fichier ainsi fopen ( "eleves.dat","wb"); tu ramène sa longueur à 0 s'il existait déjà et forcément tu te retrouves avec une seule structure dedans.
Il suffit de l'ouvrir ainsi fopen ( "eleves.dat","w+b"); et ça va régler ton problème. le w+ ne ramène pas la longueur à 0.
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 16 févr. 2009 à 09:59
Salut
Tu peux aussi ouvrir ton fichier comme cela fopen ( "eleves.dat","ab"). Il écrira alors directement à la fin de ton fichier. Plus besoin de fseek ici.
A+
____________________________________________________________________________
Mon site internet :
http://ImAnalyse.free.fr