Перейти к содержимому

Как удалить последнюю строку в файле с

  • автор:

Удаление последней строки из файла

Читать блоками с конца. Найти второй от конца ‘\n’ (это конец предпоследней строки). Вызвать ftruncate для нужной позиции.

4 июл 2020 в 7:37

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

ЧИТАТЬ первую запись в буфер ЦИКЛ (Цикл пока не конец файла) ЧИТАТЬ следующую запись ЕСЛИ НЕ конец файла ПИСАТЬ буфер КОПИРОВАТЬ результат чтения в буфер ПРОДОЛЖИТЬ цикл ИНАЧЕ ЗАВЕРШИТЬ цикл 

Смысл простой: после каждой операции чтения пишем НЕ текущий результат чтения, а предшествующий буфер. Если достигнут конец файла, последняя запись буфера не выполняется. Фактически происходит удаление последней записи.

Отслеживать
ответ дан 6 июл 2020 в 3:06
13.4k 1 1 золотой знак 13 13 серебряных знаков 29 29 бронзовых знаков

    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как удалить из файла последнюю строку в qt ?

Хочу удалить из файла последнюю строку, используя qfile. Как это сделать по простому, не переписывая его.

user2132 ★
09.10.19 09:26:01 MSK

Почему вы упорно отказываетесь читать документацию? метод resize

Silerus ★★★★
( 09.10.19 09:34:03 MSK )
Ответ на: комментарий от Silerus 09.10.19 09:34:03 MSK

И как он определит размер, который надо передавать в resize? Читать файл всё равно придётся.

ТС: совсем по-простому не получится, файл для ОС — это набор байт, а строки это уже абстракция уровнем выше.

hobbit ★★★★★
( 09.10.19 11:11:32 MSK )
Ответ на: комментарий от hobbit 09.10.19 11:11:32 MSK

Как это сделать по простому, не переписывая его.

А где ТС сказал что читать нельзя? Ресайз самое то, нашел позицию и вперед.

LinuxDebian ★★★★
( 09.10.19 11:22:07 MSK )
Последнее исправление: LinuxDebian 09.10.19 11:22:25 MSK (всего исправлений: 1)

Ответ на: комментарий от hobbit 09.10.19 11:11:32 MSK

А никто и не спорит, читать придется и считать размер придется. Но тс хочет именно подрезать без перезаписи — кто ж ему мешает. Я бы не заморачивался и сделал через запись во временный файл с последующим переименованием.

Silerus ★★★★
( 09.10.19 11:22:57 MSK )

Как это сделать по простому, не переписывая его.

Никак, у тебя всё равно будет операция записи. А так — ищи перенос строки с конца файла, да удаляй всё, что до него

XMs ★★★★★
( 09.10.19 11:23:43 MSK )

#include int ftruncate(int fildes, off_t length); int truncate(const char *path, off_t length); 

Как удалить последнюю строку в файле?

OrlovEvgenii

Если файлы ооочень большие, то чтением всего файла построчно в память и записью в новый файл не справиться!
Используйте модуль mmap. Переместитесь по seek на 5-10 максимально возможных строчек от размера файла, просканируйте строчки, возьмите размер последней строки и обрежте файл через resize.
Таким методом можно работать с любыми размерами файлов и очень быстро делать инплейс редактирование!
https://docs.python.org/3.0/library/mmap.html
В дополнение, если искомая строка для удаления находится не в самом конце файла, то кроме resize нужно еще и использовать move.
Ну и немного примеров здесь https://pymotw.com/2/mmap/

Ответ написан более трёх лет назад

Если файлы ооочень большие, то чтением всего файла построчно в память и записью в новый файл не справиться!
Используйте модуль mmap.

Если файлы действительно ооочень большие, то для mmap может не хватить адресного пространства. Но если у файла есть seek, то можно читать файл с конца в буфер фиксированного размера и искать конец строки в нём, а потом обрезать файл по найденному смещению.

leahch

jcmvbkbc, в исходники не смотрел, но наверняка там используют seek64 и остальные вызовы xxx64. Как минимум надеюсь. Ну или ваш способ тоже хорош, если resize64 внутри, а так — те же грабли 🙂 тогда только копированием.

Как удалить последнюю строку в файле с

Регистрация: 20.12.2017

Сообщений: 3

как удалить строку из файла

помогите не знаю как удалить строку из файла(массив структур)
case 3:
cout cin>>o;//26
aa a[o];
for(int i=0;i getline(file2,a[i].s1);
getline(file2,a[i].s2);
getline(file2,a[i].s3);
if(j==a[i].s1)

Регистрация: 20.04.2008

Сообщений: 5,512

1. прочитать и, записать в другой файл ВСЕ КРОМЕ. (того что не надо).
2. прочитать, запомнить все в массив, записать ВСЕ КРОМЕ. обратно(в файл).
3. прочитать, запомнить ВСЕ КРОМЕ. в массив, записать все обратно.

программа — запись алгоритма на языке понятном транслятору

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двунаправленный линейный список строк. Вставить строку, удалить строку и заменить строку tarasman11 Паскаль, Turbo Pascal, PascalABC.NET 4 05.07.2012 20:27
Удалить строку из типизированого файла Delphi prod87 Помощь студентам 4 03.07.2010 09:09
Удалить из текстового файла первую строку. annosinceva Общие вопросы C/C++ 1 31.05.2010 14:19
Как программно удалить одну строку из текстового файла(txt)? lexus_samara Общие вопросы Delphi 6 24.04.2010 22:57
Удалить последнюю строку из файла Flame_of_Death Помощь студентам 6 21.07.2009 13:48

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *