Bonjour à tous,

je début en c++ et je suis un peu perdu dans un problème de lecture / écriture de fichier. Je dois écrire un buffer de uint8 et le retrouvé en lecture par la suite.

Voici mon code:
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
 
uint8 buf[512];
 
// remplissage du buffer
//...
//
 
//Juste pour voir qu'il y a qqc dedans et que c'est très moche
cout.write((char*) buf,sizeof buf);
DumpBytes(buf,512,16);
 
//Ecriture du fichier
fstream SaveFile("my_file", ios::ate | ios::trunc | ios::binary);
SaveFile.write((char *) buf,sizeof buf);
SaveFile.flush();
SaveFile.close();
 
//Lecture du fichier
ifstream ReadFile("my_file");
uint8 buf2[512];
ReadFile.read((char*) buf2,512);
cout.write((char *) buf2,sizeof buf2);
DumpBytes(buf2,512,16);
ReadFile.close();
Affichage du buf avant écriture:

0000 : 31 c0 8e d0 66 bc 00 7c 00 00 8e c0 8e d8 89 e6 1...f..|........
0010 : 66 bf 00 06 00 00 66 b9 00 01 00 00 f3 a5 ea 23 f.....f........#
0020 : 06 00 00 80 fa 80 7c 05 80 fa 87 7e 02 b2 80 88 ......|....~....
0030 : 16 49 07 66 bf be 07 00 00 31 f6 66 b9 04 00 00 .I.f.....1.f....
0040 : 00 67 80 3f 80 75 07 85 f6 75 0c 66 89 fe 83 c7 .g.?.u...u.f....
0050 : 10 e2 ee 85 f6 75 0b 66 be 4a 07 00 00 e9 8d 00 .....u.f.J......
0060 : 00 00 8a 16 49 07 66 31 c9 66 31 c0 b4 08 cd 13 ....I.f1.f1.....
0070 : c1 ea 08 42 89 c8 83 e0 3f 89 cb c1 e9 08 81 e3 ...B....?.......
0080 : c0 00 00 00 c1 e3 02 09 d9 41 f7 e2 66 f7 e1 8a .........A..f...
0090 : 16 49 07 66 67 8b 5e 08 66 39 c3 66 7c 63 66 56 .I.fg.^.f9.f|cfV
00a0 : 52 66 bb aa 55 00 00 b4 41 cd 13 5a 66 5e 72 51 Rf..U...A..Zf^rQ
00b0 : 66 b8 55 aa 00 00 39 c3 75 47 f6 c1 01 74 42 67 f.U...9.uG...tBg
00c0 : 66 c7 06 10 00 01 00 67 66 c7 46 04 00 7c 00 00 f......gf.F..|..
00d0 : 67 66 c7 46 0c 00 00 00 00 b6 05 56 52 b4 42 cd gf.F.......VR.B.
00e0 : 13 5a 5e 73 45 fe ce 75 f2 66 be 76 07 00 00 ac .Z^sE..u.f.v....
00f0 : 84 c0 74 0a b4 0e b3 07 56 cd 10 5e eb f1 fb eb ..t.....V..^....
0100 : fd 67 8a 76 01 67 8b 4e 02 66 bf 05 00 00 00 66 .g.v.g.N.f.....f
0110 : bb 00 7c 00 00 66 b8 01 02 00 00 57 52 51 cd 13 ..|..f.....WRQ..
0120 : 59 5a 5f 73 05 4f 75 e7 eb bf 66 be 62 07 00 00 YZ_s.Ou...f.b...
0130 : 67 a1 fe 7d 00 00 66 bb 55 aa 00 00 39 c3 75 af g..}..f.U...9.u.
0140 : 8a 16 49 07 ea 00 7c 00 00 80 49 6e 76 61 6c 69 ..I...|...Invali
0150 : 64 20 70 61 72 74 69 74 69 6f 6e 20 74 61 62 6c d partition tabl
0160 : 65 00 4e 6f 20 6f 70 65 72 61 74 69 6e 67 20 73 e.No operating s
0170 : 79 73 74 65 6d 00 45 72 72 6f 72 20 6c 6f 61 64 ystem.Error load
0180 : 69 6e 67 20 6f 70 65 72 61 74 69 6e 67 20 73 79 ing operating sy
0190 : 73 74 65 6d 00 00 00 00 00 00 00 00 00 00 00 00 stem............
01a0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01b0 : 00 00 00 00 00 00 00 00 c9 2e 0e 00 00 00 00 01 ................
01c0 : 01 00 82 fe 3f f6 3f 00 00 00 f8 8b 3c 00 80 00 ....?.?.....<...
01d0 : 01 f7 83 fe ff ff 37 8c 3c 00 ef 6b a3 01 00 00 ......7.<..k....
01e0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01f0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa ..............U.
Affichage du buf2 après la lecture:
0000 : 31 c0 8e d0 66 bc 00 00 58 86 2e de 77 2b 00 00 1...f...X...w+..
0010 : b8 05 00 00 00 00 00 00 58 86 2e de 77 2b 00 00 ........X...w+..
0020 : 80 06 00 00 00 00 00 00 58 22 2f de 77 2b 00 00 ........X"/.w+..
0030 : 79 3a 3c 07 00 00 00 00 2f e7 bb dc 77 2b 00 00 y:<...../...w+..
0040 : 50 2e ef cd ff 7f 00 00 0e 00 00 00 00 00 00 00 P...............
0050 : 60 2e ef cd ff 7f 00 00 68 b6 55 de 77 2b 00 00 `.......h.U.w+..
0060 : c5 d8 15 0a 00 00 00 00 43 d9 55 de 77 2b 00 00 ........C.U.w+..
0070 : 10 00 00 00 00 00 00 00 b0 c3 2f de 77 2b 00 00 ........../.w+..
0080 : 46 b7 30 de 77 2b 00 00 f0 72 50 00 00 00 00 00 F.0.w+...rP.....
0090 : 00 00 00 00 00 00 00 00 f0 72 50 00 00 00 00 00 .........rP.....
00a0 : 79 3a 3c 07 00 00 00 00 b0 76 50 00 00 00 00 00 y:<......vP.....
00b0 : 90 2e ef cd ff 7f 00 00 b0 76 50 00 00 00 00 00 .........vP.....
00c0 : a0 2e ef cd ff 7f 00 00 60 2e ef cd ff 7f 00 00 ........`.......
00d0 : c5 d8 15 0a 00 00 00 00 10 6d 50 00 00 00 00 00 .........mP.....
00e0 : a0 2e ef cd ff 7f 00 00 58 86 2e de 77 2b 00 00 ........X...w+..
00f0 : 94 01 00 00 00 00 00 00 38 ac 2e de 77 2b 00 00 ........8...w+..
0100 : 00 00 00 00 00 00 00 00 2f e7 bb dc 77 2b 00 00 ......../...w+..
0110 : 61 82 46 0d 00 00 00 00 0e 00 00 00 00 00 00 00 a.F.............
0120 : 30 2f ef cd ff 7f 00 00 28 9c 55 de 77 2b 00 00 0/......(.U.w+..
0130 : d8 4c 8e 01 00 00 00 00 c0 f5 55 de 77 2b 00 00 .L........U.w+..
0140 : 10 00 00 00 00 00 00 00 b0 c3 2f de 77 2b 00 00 ........../.w+..
0150 : 46 b7 30 de 77 2b 00 00 60 73 50 00 00 00 00 00 F.0.w+..`sP.....
0160 : 00 00 00 00 00 00 00 00 f0 72 50 00 00 00 00 00 .........rP.....
0170 : 50 2f ef cd ff 7f 00 00 10 2f ef cd ff 7f 00 00 P/......./......
0180 : 61 82 46 0d 00 00 00 00 b0 76 50 00 00 00 00 00 a.F......vP.....
0190 : 70 2f ef cd ff 7f 00 00 30 2f ef cd ff 7f 00 00 p/......0/......
01a0 : d8 4c 8e 01 00 00 00 00 10 6d 50 00 00 00 00 00 .L.......mP.....
01b0 : 70 2f ef cd ff 7f 00 00 b8 04 40 00 00 00 00 00 p/........@.....
01c0 : 31 0b 40 00 00 00 00 00 48 15 bd dc 77 2b 00 00 1.@.....H...w+..
01d0 : 18 00 00 00 00 00 00 00 00 2a cd dc 77 2b 00 00 .........*..w+..
01e0 : 24 00 00 00 00 00 00 00 60 2d cd dc 77 2b 00 00 $.......`-..w+..
01f0 : 0c 00 00 00 00 00 00 00 73 e8 bb dc 77 2b 00 00 ........s...w+..
Il n'y a que la moitié de la première ligne (31 c0 8e d0 66 bc 00) qui est écrite dans le buf2 et l'affichage du deuxième cout est complète à côté de la plaque (sauf pour les 8 premier char).

Merci pour votre aide.

Mario

PS: je suis sur linux