Comment supprimer un caratere d'un fichier texte avec langage C++

Salut,

Imaginons que dans un fichier texte de 30 lignes, qu’il y a cela à la 5ème ligne; “Cette voitures est parfaite”.
Puis, je veux corriger la faute d’orthographe, … voiture au pluriel…

Comment faire cela en langage C++ ? :slight_smile:

Aussi, si vous savez comment faire pour effacer toute le ligne, ça m’intéresse :slight_smile:

Merci d’avance :wink:

Il suffit de modifier le code source, ou plus précisément la ligne incriminée.

Ou tu parle d’un fichier texte que tu charge en mémoire ?

Le fichier test.txt est sur le disque dur (même répertoire que l’exécutable), et je veux lui faire cette modification en utilisant un programme en C++. Préalablement, j’aurais compilé le code source avant.

Quel code source est-ce qu’il faut écrire, afin que l’exécution ce déroule ainsi;
Question posé par le programme : quel numéros de ligne voulez vous modifier ?
Réponse de l’utilisateur : 5
Question posé par le programme : Veuillez entrer le nouveau contenu de la ligne 5
Réponse de l’utilisateur : Cette voiture est parfaite
Réponse du programme : Modification effectué

Même si j’ai pas tout le code source entier, quelqu’un à une idée sur la commande à utiliser ?
Une indication ?

Une fois que le positionnement est effectué au début de la ligne 5, la première chose à faire, c’est peut être de commencer par effacer cette ligne 5.
Comment l’effacer ?

A priori, en réécrivant tout le fichier passé le début de la ligne, ce au sautant la ligne courante.

Tu charge tout le fichier texte dans un tableau (si c’est du genre une liste). Tu fais modifier la 5ème ligne du tableau par exemple, et tu fait reécrire tout le fichier dans le fichier texte (après l’avoir effacé, il me semble que ça le fait automatiquement). Il faut utiliser la librairie fstream. Perso j’aim quelques problème avec dans Visual studio mais bon ça marche peut être chez toi.

Si ce sont des gros fichiers (genre > 1Mo), ton programme va subir :slight_smile: même si ça reste une méthode relativement “fiable”.

Le mieux c’est d’analyser le fichier pour en déterminer les index des débuts de lignes (ftell en C, en C++ std::istream::tellg. Ca t’évite de stocker en mémoire un gros fichier. Ensuite, si besoin est, tu peux le locker pour éviter d’avoir des index incohérents (ça peut arriver si tu lis un fichier en cours de modif, genre des logs, mais ça ne semble pas être le cas, et de toute façon ça posera problème au programme qui écrit dans le fichier log).
Edité le 08/04/2010 à 00:54

Super, ben c’est clair :slight_smile:
Comme il s’agit d’un petit fichier, je vais tout charger en mémoire, modifier, puis écraser le fichier.
Je crois que c’est comme ça que fait le bloc note, non ?

Sinon, la méthode ftell / std::tellg semble aussi super intéressante ! :jap:

Enfin, grâce à vous, j’ai du pain sur la planche, merci :wink: