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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
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);
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
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?