Bonjour / bonsoir,
Je dois gérer un fichier binaire contenant des commentaires entrés au clavier.
Ces commentaires sont de taille variable, et on doit pouvoir les modifier a volonté.
Le fichier se présente ainsi: un entier pour identifier le commentaire, puis le commentaire en lui même, puis un autre entier suivi d'un autre commentaire etc.
Cependant imaginons que j'ai un fichier comme celui-ci:
1commentaire_un2commentaire_2
Si je veux remplacer la chaîne commentaire_un par une chaîne plus longue (ou plus courte), comment puis-je le faire sans écraser le commentaire suivant?
Avec ce code, la chaîne "commentaire_un_plus_long" va écraser les données suivantes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int d; char s[25] = "commentaire_un_plus_long"; d = open ("test", O_WRONLY, 0666); lseek (d, 0, SEEK_SET); write (d, s, strlen (s) * sizeof (char)); close (d);
Y a t-il un moyen d'éviter cela, et de décaler les données suivantes ?
Ou une autre astuce pour gérer mon fichier?
J'espère avoir été assez clair.
Merci de m'avoir lu !
[EDIT] Ah oui petite précision, je ne dois absolument pas charger ce fichier en mémoire centrale, seulement me contenter de lire et d'écrire dans le fichier.
Partager