Et si au lieu de réécrire ton fichier, tu n'écrivais que les indices des bouts à enlever...?
1. Tu lis le fichier d'origine (lecture seule)
2. Tu enregistre les positions des bouts à supprimer. Tu n'as qu'un seul fichier à gérer. Au pire, si tu dois le faire en plusieurs fois à cause de la structure de ton programme, tu concatènes tout dans ton fichier temporaire.
3. A la fin, tu fais une passe sur ton fichier d'origine tout en regardant les indices à éviter dans ton fichier temporaire et tu produis ton fichier résultat.
[...]
En y réfléchissant bien, je crois qu'une solution encore meilleure serait de faire cela au fil de l'eau à la première lecture du fichier, sans fichier temporaire, en sauvegardant dans un contexte ta position dans le fichier d'origine, pour savoir où reprendre dans ton traitement "morcelé"... Vu que de toute façon les écritures sont bufferisées, tu devrais pas avoir de performances trop dégueux... Par contre oublie pas de faire un fflush pour vider le cache disque et forcer l'écriture des données restantes... (Dites moi si je rconte des conneries, j'ai pas fait de C depuis un moment...)
# Réflexion...
Posté par liberforce (site web personnel, Mastodon) . En réponse au message Supprimer le contenu d'un fichier. Évalué à 2.
1. Tu lis le fichier d'origine (lecture seule)
2. Tu enregistre les positions des bouts à supprimer. Tu n'as qu'un seul fichier à gérer. Au pire, si tu dois le faire en plusieurs fois à cause de la structure de ton programme, tu concatènes tout dans ton fichier temporaire.
3. A la fin, tu fais une passe sur ton fichier d'origine tout en regardant les indices à éviter dans ton fichier temporaire et tu produis ton fichier résultat.
[...]
En y réfléchissant bien, je crois qu'une solution encore meilleure serait de faire cela au fil de l'eau à la première lecture du fichier, sans fichier temporaire, en sauvegardant dans un contexte ta position dans le fichier d'origine, pour savoir où reprendre dans ton traitement "morcelé"... Vu que de toute façon les écritures sont bufferisées, tu devrais pas avoir de performances trop dégueux... Par contre oublie pas de faire un fflush pour vider le cache disque et forcer l'écriture des données restantes... (Dites moi si je rconte des conneries, j'ai pas fait de C depuis un moment...)