Remplacer des données dans un fichier

Problème

Vous désirez remplacer un enregistrement ou toute autre donnée dans un fichier. 

Solution

La méthode est semblable à celle de l’insertion de données dans un fichier. La différence se trouve dans le déplacement des données de fin de fichier : le décalage ne correspond pas à la taille des données à insérer, mais à la différence entre celle-ci et la taille des données à remplacer.

Discussion

Pour résoudre ce problème, nous pouvons nous reporter au problème de la recette précédente. Dans la méthode avec utilisation d’un fichier temporaire, il faut, après avoir inséré des lignes fournies en argument, exécuter fseek(fd, nb_a_remplacer, SEEK_CUR);.

Dans la seconde méthode, sans fichier temporaire, lors de l’initialisation de write_pos, il faut tenir compte de la taille des données à remplacer. Si elles sont moins nombreuses que les nouvelles, le fichier grandit et il suffit de reprendre le code de la recette précédente et de l’adapter. Si elles sont plus nombreuses que celles que nous allons mettre à leur place, le fichier réduit de taille. Alors nous remplaçons ce qu’il faut, puis appliquons la recette suivante pour supprimer le surplus au milieu du fichier. Cette méthode étant relativement longue et propice à l’apparition...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Ajouter des données à un fichier
Suivant
Supprimer une partie d'un fichier