удалить содержимое строки, на которую указывает указатель файла - PullRequest
2 голосов
/ 16 марта 2011

мой указатель файла указывает на конец строки.Я хочу удалить все содержимое этой строки, как мне это сделать?

Мне может понадобиться переместить указатель файла в начало строки, а затем удалить содержимое.

Ответы [ 3 ]

2 голосов
/ 16 марта 2011

Вы можете удалить только с конца файла.Чтобы удалить данные из середины файла, вам, как правило, необходимо скопировать последующие данные, чтобы закрыть пробел (или, как правило, проще создать новую копию файла, пропуская часть, которую вы хотите удалить).

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

1 голос
/ 16 марта 2011

Вы не можете «удалить» что-либо из файла.В языке C файлы доступны через потоки, а потоки вообще не поддерживают такую ​​операцию, как «удалить строку» или «удалить» что-либо.Вы можете удалить весь файл, но это, очевидно, не то, что вам нужно.

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

Есть вероятность, что вы можете подразумевать что-то еще под словом «удалить» (что означает «удаление», кстати?).Возможно, вы захотите перезаписать содержимое строки пробелами, например.Если это так, просто переместите указатель текущего файла в начало строки и запишите в файл соответствующее количество пробелов.

0 голосов
/ 16 марта 2011

Вы должны переместить весь контент за пределы строки обратно в место, где начинается строка, которую нужно удалить.

Если вы работаете в среде, которая его поддерживает, вы можете mmap(2) файл, работать со всем этим в памяти и использовать memmove(3) для внесения изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...