Comment ne supprimer que la dernière ligne d’un fichier texte ASCII en utilisant C?

J’ai un fichier texte. Comment puis-je supprimer la dernière ligne du fichier uniquement à l’aide de C?

Merci! John.

ANSI C ordinaire ne fournit aucun moyen standard de réduire la taille d’un fichier – la seule façon de procéder en C standard consiste à copier tout le contenu du fichier dans un nouveau fichier, à l’exception de la partie que vous souhaitez omettre.

Vous pouvez également utiliser des fonctions spécifiques au système d’exploitation pour tronquer le fichier sur place. Par exemple, POSIX fournit la fonction ftruncate() , qui raccourcit un fichier à une longueur donnée. Vous devez rechercher le début de la dernière ligne, puis tronquer le fichier immédiatement avant (en utilisant lseek() pour obtenir la position).


L’alternative la plus simple, si vous avez la head GNU, est simplement de l’utiliser:

 head -n -1 < file.original > file.new 

Vous avez raison avec l’approche. Sacn pour les nouvelles lignes, rappelez-vous le dernier et utilisez ensuite truncate ou ftruncate . voir aussi Comment tronquer un fichier en C? .

hth

Mario