Как удалить только последнюю строку текстового файла ASCII, используя C? - PullRequest
0 голосов
/ 20 января 2011

У меня есть текстовый файл. Как мне удалить только последнюю строку в файле, используя C?

Спасибо! Джон.

Ответы [ 2 ]

6 голосов
/ 20 января 2011

Обычный ANSI C не предоставляет никакого стандартного способа уменьшения размера файла - единственный способ сделать это в стандартном C - это скопировать все содержимое файла в новый файл, за исключением части, которую вы хотите опустить.

Кроме того, вы можете использовать специфичные для ОС функции для усечения файла на месте.Например, POSIX предоставляет функцию ftruncate(), которая сокращает файл до заданной длины.Вы должны искать начало последней строки, а затем обрезать файл непосредственно перед этим (используя lseek() для получения позиции).


Самый простой вариант из всех, если у вас есть GNU head, просто использовать это:

head -n -1 < file.original > file.new
0 голосов
/ 20 января 2011

Вы правы с подходом. Sacn для новых строк, запомните последний и затем используйте truncate или ftruncate. см. также Как обрезать файл в C? .

НТН

Mario

...