Как удалить нужную часть текста из текстового документа?

387
09 апреля 2017, 03:54

Допустим, я записал некоторую структуру в текстовый файл с помощью fwrite, например, 20 заводов. Как я могу удалить нужные мне заводы? Можно ли стереть нужный участок текстового документа?

Answer 1

Просто "стереть" участок файла невозможно. Его можно перезаписать какой-то иной информацией, и не более того. Можно в принципе обрезать файл, начиная с определенного места, теряя всю информацию.

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

Можно - если все записи одного размера, а порядок неважен - перезаписывать их информацией из конца файла с последующей обрезкой.

Для текстовых файлов это все достаточно трудно реализовать, но тут у вас противоречие - в заголовке речь о текстовых файлах, в тексте вопроса - о структурах и fwrite, т.е. вроде бы о файле бинарном?

READ ALSO
Виртуальное наследование

Виртуальное наследование

VS2015Код упростил

240
Шаблонный класс [дубликат]

Шаблонный класс [дубликат]

На данный вопрос уже ответили:

261
Почему программа выдает ошибку на Q_OBJECT в классе, наследованный от QMainWindow?

Почему программа выдает ошибку на Q_OBJECT в классе, наследованный от QMainWindow?

Всем здравствуйтеЯ недавно начал учить фреймворк Qt

250
Output and input [требует правки]

Output and input [требует правки]

Не могу понять зачем нужен output и input и как его использовать

317