2 votes

Quel est le moyen le plus court d'ajouter 3 octets au début d'un fichier binaire en C ?

La méthode la plus simple que je connaisse consiste à créer un nouveau fichier, à y écrire les trois octets, puis à lire le fichier original en mémoire (dans une boucle) et à l'écrire dans le nouveau fichier.

Existe-t-il un moyen plus rapide qui permettrait soit d'ignorer la création d'un nouveau fichier, soit d'ignorer la lecture du fichier d'origine en mémoire et son écriture en retour ?

1voto

Il n'existe malheureusement aucun moyen (avec POSIX ou les API de fichiers libc standard) d'insérer ou de supprimer une plage d'octets dans un fichier existant.

1voto

geekosaur Points 26170

Il ne s'agit pas tant du langage C que des systèmes de fichiers ; il n'y a pas beaucoup d'API de systèmes de fichiers courants qui fournissent des raccourcis pour l'ajout de données, de sorte qu'en général, la méthode directe est la seule possible.

Il est possible d'utiliser une forme d'E/S en mémoire adaptée à votre plate-forme, mais cela revient à remplacer un ensemble de problèmes par un autre (par exemple, pouvez-vous faire entrer le fichier entier dans votre espace d'adressage ou êtes-vous obligé de le découper en morceaux ?)

0voto

tomlogic Points 5044

Vous pouvez ouvrir le fichier en lecture/écriture, lire les 4 premiers Ko, rechercher 4 Ko en arrière, écrire vos trois octets, écrire (4 Ko - 3) octets et répéter le processus jusqu'à ce que vous atteigniez la fin du fichier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X