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 : Sélectionner tout - Visualiser dans une fenêtre à part
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

J'ai essayé aussi un mode d'ouverture différent :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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

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 ?