URL: https://linuxfr.org/forums/programmation-c--2/posts/supprimer-le-contenu-dun-fichier Title: Supprimer le contenu d'un fichier Authors: Moonz Date: 2005年05月23日T16:11:19+02:00 Tags: Score: 0 Bonjour, mon problème est assez bête: j'ai un fichier composé par exemple de chiffres codés sur 1 octet: 0 1 2 3 4 5 6 7 8 9 10 0 0 11 12... J'aimerais, sans avoir à créer un fichier temporaire, supprimer la séquence "0 0" (par exemple), afin d'obtenir 0 1 2 3 4 5 6 7 8 9 10 11 12... Bien sûr, l'exemple est simpliste, le fichier ne contient pas ça, je ne veut pas forcément supprimer les 0, et les chiffres ne sont pas forcément codés sur 1 octet, mais l'idée y est. En gros, j'aimerais supprimer n octets du fichier à partir de la position p. J'ai regardé du coté de ftruncate, mais ça supprime tout à partir de p, et moi je veux supprimer seulement n octets J'ai pensé à deux manières, mais je pense que ça risque d'être lent (si beaucoup de suppressions dans un gros fichier) - créer un fichier temporaire, y copier tout ce qu'il y a avant p, sauter n octets, puis écrire le reste du fichier original dans le fichier temporaire, et enfin déplacer le fichier temporaire sur le fichier à rétrécire - ne rien modifier avant p. Puis, à p+k , on place les données situées à p+n+k , puis enfin faire appel à ftruncate pour supprimer les n derniers octets du fichier Je n'ai pas essayé, mais ça risque d'être très lent si je veux supprimer des milliers d'octets séparés par quelques octets... Quelqu'un aurait une idée plus rapide ? Merci d'avance :)