Bonjour,
Ma question est assez simple, j'aimerais connaître le moyen d'ajouter une ligne en début de fichier par le biais de code c++ (et non par shell avec sed)
Merci d'avance !
Bonjour,
Ma question est assez simple, j'aimerais connaître le moyen d'ajouter une ligne en début de fichier par le biais de code c++ (et non par shell avec sed)
Merci d'avance !
tu prends un fichier, tu stock le contenu dans une chaine, tu concatène avec la chaine que tu veux rajouter et tu écris dans le fichier, je vois pas ce qui te bloques les dedans? :/
Bonjour,
L'insertion en place est impossible.
Un fichier est une suite d'octet, il faut décaler vers le fond chaque octet pour y parvenir.
Si le fichier est petit, lit le dans une string, puis écrit ta chaine, et celle contenant le fichier.
S'il est gros, crée un autre fichier, écrit la ligne, puis copie au bout l'autre fichier.
Dans les deux cas, les fstream et sstream seront tes amis
PS: Puisque tu parles de commandes shell linux, ca peut se faire ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo "ma première ligne" | cat - fichier > fichier
Viens de penser à une autre solution.
Ouvrir le fichier en commençant par la fin (avec un mmap ou autre du genre).
Connaitre la taille de la ligne à rajouter.
Décaler tout les octet de la taille de la ligne en remontant chaque octet.
insérer la ligne une fois qu'on a atteint le début.
ensuite je sais pas trop comment faire en code, mais en fouillant un peu, je suis sur que c'est faisable.
tu peux meme le faire en remontant, en lisant par blocs de la taille de la chaine à insérer.
Merci pour vos réponses !
Finalement la solution proposée par leternel me semble être la plus simple d'utilisation !
Seulement, j'ai un bon millier de fichiers txt dans un dossier, et j'aimerais leur rajouter à tous la même ligne, est-ce possible avec la solution echo ?
Merci d'avance !
Partager