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
RoutinesCode:
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 ; }
Code:
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); }
La premiere lecture ecriture fonctione mais la 2eme non. Pourquoi?Code:
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); }
Pourriez vous m'éclaircir sur ce sujet?