bonsoir,
Voici mon problème, j'écrit des données dans un fichier texte avec fwrite () puis les lis avec fread (), jusque là pas de problème tout marche bien, seulement voila ce que je lis n'est pas ce que j'ai écrit et je n'arrive pas à voir si cela vient de l'écriture ou de la lecture ou bien des deux. Voici mes fonctions d'écriture:
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
22
23
24
25
26 void ecrireSeq(FILE *f, sequence s) { char buff = 0; size_t n = CHAR_BIT; while (s != NULL) { buff <<= 1; buff |= s->data; n--; if (n == 0) { fwrite(&buff, sizeof buff, 1, f); n = CHAR_BIT; } s = s->suivant; } if (n != 0) { fwrite(&buff, sizeof buff, 1, f); } return; }Mes fonctions de lecture:
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 ecrireLst(FILE *f, liste l) { while (l != NULL) { if (fwrite(&l->data, sizeof l->data, 1, f) != 1) { fputs("ecrireLst: Echec d'ecriture", stderr); exit(1); } l = l->suivant; } return; }
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
22
23 sequence bufftoseq(FILE *f) { sequence res = NULL; char buff = 0; while (fread(&buff, sizeof buff, 1, f) == 1) { int i = CHAR_BIT - 1; for ( ; i >= 0; i--) { inserer_apres(&res, buff & 1UL << i); } } if (feof(f) == 0) { fputs("bufftoseq: Echec de lecture", stderr); exit(1); } return res; }Si vous avez besoin d'autres parties du programme pour mieux comprendre n'hésitez pas. Merci d'avance
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 liste lireLst(FILE *f, size_t n) { liste res = NULL; size_t i = 0; arbrepoids a; for ( ; i < n; i++) { if (fread(&a, sizeof a, 1, f) != 1) { libere_listeEntiere(&res); fputs("lireLst: Echec de lecture", stderr); exit(1); } res = creer_liste(a, res); } return res; }
Partager