Problème d'écriture vers fichier binaire
Bonjour à tous.
J'ai un petit problème qui concerne l'écriture d'un fichier sans altérer son contenu initial (à part la partie réécrite évidemment).
Je cherche à réécrire (remplacer) au début du fichier une structure de taille 54 octets.
Ca marche bien mais le souci c'est que je perd tout ce qu'il y a après.
J'ai essayé avec :
Code:
1 2 3 4 5 6 7 8 9 10
|
ofstream FileOut;
FileOut.open(nom_fic.c_str(), ios_base::binary); // Ouverture
if ( FileOut.is_open() ) {
FileOut.write( reinterpret_cast<const char*>(&fh), sizeof(BMPFILEHEADER) );
FileOut.write( reinterpret_cast<char*>(&ih), sizeof(BMPINFOHEADER) );
FileOut.close();
} else succes = false; |
Résultat : Ma structure est bien écrite pas de souci pour la relire ensuite, mais je me retrouve avec des fichiers de 54 octets en ayant perdu toute la suite :cry:
J'ai essayé aussi un mode d'ouverture différent :
Code:
1 2 3
|
FileOut.open(nom_fic.c_str(), ios_base::ate); // Ouverture
FileOut.seekp(0); |
Le mode "ate" sert apparament à ouvrir et se placer à la fin, donc en conservant le contenu, et seekp permet de se replacer au début du fichier.
L'idée me paraissait bonne... résultat : 54 octets :cry:
Comme les fichiers en question sont des bmp (plusieurs méga), j'aimerai bien
éviter de devoir bidouiller en lisant tout pour réécrire tout !
Quelqu'un a t-il une solution ?