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 :
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.
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);
J'ai aussi essayé le code suivant qui lui fonctionne.
Mais qui ne correspond pas à mon besoin car je ne peux plus revenir à la position X...
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);
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
@+
Partager