Inserer du texte dans un fichier texte

Inserer du texte dans un fichier texte - C++ - Programmation

Marsh Posté le 26-03-2003 à 10:42:06    

Bonjour,
Voila, je voudrais inserer du texte au milieu d'un fichier, mais sans effacer ce qu'il y a apres...
J'utilise une classe fstream, mais si ya mieux, je peux toujours changer ;) ...
 
Enfin sinon je serai obliger d'utiliser la methode bourrin : re-creer un fichier :(
 
Merci d'avance :)

Reply

Marsh Posté le 26-03-2003 à 10:42:06   

Reply

Marsh Posté le 26-03-2003 à 10:52:10    

en C++, je ne sais plus
en C "pur": fopen, fseek, fprintf, fclose

Reply

Marsh Posté le 26-03-2003 à 11:15:51    

western a écrit :

en C++, je ne sais plus
en C "pur": fopen, fseek, fprintf, fclose


 
Perdu :sarcastic:, ca efface ce qu'il y a dans le fichier...
 
Merci quand meme.

Reply

Marsh Posté le 26-03-2003 à 11:40:38    

a mon avis tu ne peux pas, tu es obligé de passer par un autre fichier, tu y recopie le debut, ce que tu voullais inserer, et la fin.

Reply

Marsh Posté le 26-03-2003 à 11:52:18    

Code :
  1. std::fstream of ("fichier", std::ios::in | std::ios::out);
  2. if (of.is_open ())
  3. {
  4.    of.seekp (pos, std::ios::beg); // se placer à la position pos
  5.    of << "blabla";
  6.    /*
  7.     * Ecrire plein d'autres trucs
  8.     */
  9.   of.close ();
  10. }
  11. else
  12. // erreur d'ouverture

 
 
Utilise les fonctions seekp pour te déplacer dans le fichier

Reply

Marsh Posté le 26-03-2003 à 11:54:59    

nico168 a écrit :

a mon avis tu ne peux pas, tu es obligé de passer par un autre fichier, tu y recopie le debut, ce que tu voullais inserer, et la fin.


ça me revient: normalement, les fichiers sont gérés de façon sequenciel, c'est-à-dire que tu ecrase ...
il y a un autre façon: des fichiers à accès aléatoire où tu peux modifier ...

Reply

Marsh Posté le 26-03-2003 à 12:43:56    

western a écrit :


ça me revient: normalement, les fichiers sont gérés de façon sequenciel, c'est-à-dire que tu ecrase ...
il y a un autre façon: des fichiers à accès aléatoire où tu peux modifier ...


 
essayes man MapViewOfFile() dans la section "File Mapping functions".
Le principe c que ca te sort un void* correspondant a ton fichier, et en spécifiant une taille de mapping plus grand que le fichier original ca va agrandir ton fichier. ensuite avec ton void* tu inseres sans pb des trucs en plein milieu (y a plein de fct pour ca, surtout si c du texte : tu mets tout ca dans une string et tu fais des insert basiquement). Et ensuite surtout tu appelles UnMapViewOfFile() et ca va te recréer tout seul le fichier correspondant a ton void*.
 
voila.
vive le Win32.

Reply

Marsh Posté le 27-03-2003 à 23:55:01    

Elrond a écrit :


 
Perdu :sarcastic:, ca efface ce qu'il y a dans le fichier...
 
Merci quand meme.


 
hum non pas forcement ...
 
sinon un truc simple tu ouvre ton fichier en r+ tu met tout le contenu dans un tableau de chat et tu place ce que tu veux avec les fonction strcmp ou strstr pour trouver ce que tu veux et tu rebalance tout dans le fichier apres avoir tout travaillr en memoire

Reply

Marsh Posté le 28-03-2003 à 07:53:12    

Oui pourquoi pas...
Mais pour l'utilisation que je vais en faire, je vais initaliser
des lignes des espaces à la fin... et j'agrandirai le fichier que quand une ligne sera trop courte... (surement par ta méthode d'ailleur)
 
Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed