Bonjour,

Je travail sur un fichier d'une taille initiale X,
Cette taille augmente au fur et à mesure de programme

A chaque fois que je veux le modifier je me positionne en X (je ne veux pas toucher aux données qui se trouvent avant)

Pour se faire j'utilise le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
ofstream outfile ( strFichier.c_str(), ofstream::binary | ofstream::out );
 
outfile.seekp( X );
// ou
// outfile.seekp( X, ios_base::beg );  ne change rien
 
outfile.write((char *)donnees, tailleDonnees);
Le problème est que avec cette méthode, qui me parait pourtant logique, les données du fichier ( avant la position X ) sont altérées par ce que j'écris.


J'ai aussi essayé le code suivant qui lui fonctionne.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
ofstream outfile ( strFichier.c_str(), ofstream::binary | ofstream::app);
 
outfile.write((char *)donnees, tailleDonnees);
Mais qui ne correspond pas à mon besoin car je ne peux plus revenir à la position X...


J'ai remplacé la première méthode (avec le seek) par l'équivalent C,a savoir des fopen, fread ... et fseek et cela marche très bien...


Quelqu'un aurai-t-il une idée du problème ??


Merci
@+