une ligne spécifique d'écraser un fichier texte?
-
11-09-2019 - |
Question
comment puis-je aller sur une ligne spécifique d'écraser un fichier texte dans c ?. J'ai des valeurs de plusieurs variables qui doivent être écrites sur le fichier.
La solution
Cela ne fonctionne que lorsque la nouvelle ligne a la même taille que l'ancien:
- Ouvrez le fichier dans le mode
a+
-
fseek()
au début du fichier - Avant de lire la ligne suivante, utilisez
ftell()
de noter le début de la ligne - Lire la ligne
- Si c'est la ligne que vous voulez,
fseek()
à nouveau avec le résultat deftell()
et utiliserfwrite()
pour le remplacer.
Si la longueur de la ligne change, vous devez copier le fichier.
Autres conseils
Étant donné que les fichiers (du point de vue de la bibliothèque standard C) ne sont pas en ligne orientée, mais sont juste une séquence de caractères (ou octets en mode binaire), vous ne pouvez pas vous attendre à les modifier à la ligne de niveau facilement.
Comme Aaron décrit, vous pouvez remplacer des cours les caractères qui composent la ligne si votre remplacement est le nombre exact de même caractère.
Vous pouvez aussi (peut-être) insérer un remplacement plus court par rembourrage avec un espace à la fin (avant la fin de ligne). C'est bien sûr un peu grossier.