удаление строки из определенной позиции в файле - PullRequest
2 голосов
/ 31 марта 2011

Я хочу удалить строку из определенной позиции в файле.Это функция для этого?Можно ли удалить последнюю строку файла с помощью функции?

Ответы [ 3 ]

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

Нет, нет такой функции, которая позволила бы вам сделать это прямо в файле.

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

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

Мне не хочется искать все функции io, так что вот псевдо-c о том, как реализовать вариант 2 ответа ArsenMkrt

char buffer[N]; // N >= 1
int str_start_pos = starting position of the string to remove
int str_end_pos = ending position of the string to remove
int file_size = the size of the file in bytes
int copy_to = str_start_pos 
int copy_from = str_end_pos + 1

while(copy_from < file_size){
    set_file_pos(file, copy_from)
    int bytes_read = read(buffer, N, file)
    copy_from += bytes_read
    set_file_pos(file, copy_to)
    write(buffer, file, bytes_read)
    copy_to += bytes_read
}
truncate_file(file,file_size - (str_end_pos - str_start_pos + 1))

что-то на этот счет

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

У вас есть два варианта

  1. Чтобы прочитать весь файл, удалите то, что вам нужно, и запишите его обратно
  2. Если файл большой, последовательно прочитать файл, удалить заданную часть и переместить содержимое после этого вперед
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...