Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/05/2008, à 12:47

Maesp

Entrée / sortie dans un fichier binaire

Bonjour,


Voila plusieurs jours que je cherche désepérément des informations pour débloquer un problème.

Le but est d'enregistrer des données dans un fichier binaire et de pouvoir par la suite enregistrer des modifications (sans devoir réécrire tout le fichier et sans devoir le reparcourir entièrement).

Voici le code que me pose problème:

Main

#include <stdio.h>
void ecriture(FILE * fichier, int *pnelem, int *pnelem2);
void lecture(FILE * fichier, int *pnelem, int *pnelem2, int *pverif);
int main(void){
  FILE * fichier;
  int nelem = 2, nelem2 = 1, verif=0;
  
  fichier = fopen("c:\\fichier.DATA","a+b");
  ecriture(fichier, &nelem, &nelem2);
  lecture(fichier, &nelem, &nelem2, &verif);
  
  nelem = 5;
  nelem2 = 6;
  verif=0;
  
  ecriture(fichier, &nelem, &nelem2);
  lecture(fichier, &nelem, &nelem2, &verif);
  fclose(fichier);
 
  return 0 ;
}
 Routines

Code :

Routines

 
void ecriture(FILE * fichier, int *pnelem, int *pnelem2){
  fseek(fichier,4, SEEK_SET);
  fwrite(pnelem,sizeof(int),1,fichier);
 
  fseek(fichier,0, SEEK_SET);
  fwrite(pnelem2,sizeof(int),1,fichier);
 
  fseek(fichier,8, SEEK_SET);
  fwrite(pnelem,sizeof(int),1,fichier);
  
  fseek(fichier,12, SEEK_SET);
  fwrite(pnelem2,sizeof(int),1,fichier);
}
 
void lecture(FILE * fichier, int *pnelem, int *pnelem2, int *pverif){
  fseek(fichier,4, SEEK_SET);
  fread(pverif,sizeof(int),1,fichier);
  printf("fread =%d\n",*pverif);
 
  fseek(fichier,0, SEEK_SET);
  fread(pverif,sizeof(int),1,fichier);
  printf("fread =%d\n",*pverif);
 
  fseek(fichier,8, SEEK_SET);
  fread(pverif,sizeof(int),1,fichier);
  printf("fread =%d\n",*pverif);
  
  fseek(fichier,12, SEEK_SET);
  fread(pverif,sizeof(int),1,fichier);
  printf("fread =%d\n",*pverif);
 
}

La premiere lecture ecriture fonctione mais la 2eme non. Pourquoi?

Pourriez vous m'éclaircir sur ce sujet?