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?

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);
Avec ce code, la chaîne "commentaire_un_plus_long" va écraser les données suivantes.

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.