Вставка данных в определенную позицию в файле с помощью fseek () в C - PullRequest
0 голосов
/ 18 марта 2011

В основном я хочу записать данные в файл в определенной позиции и не хочу загружать данные в память для сортировки.Например, если у меня есть файл:

FILE.txt

Andy dsoza
Arpit Raj
Karishma Shah
Pratik Mehta
Zppy andre

И я хочу вставить контакт Barbie patel, затемя буду читать первую букву в файле после каждой строки, поэтому Барби следует вставлять после Арпита и перед Каришмой, чтобы после редактирования файл был:

FILE.txt

Andy dsoza
Arpit Raj
Barbie Patel
Karishma Shah
Pratik Mehta
Zppy andre

Но fseek приводит меня к этому положению, но не помогает мне вставить, когда я использую fprintf / fwrite / putc.Он заменяет байт, но не вставляет перед этим конкретным байтом.

Загрузка всех данных в память и их сортировка не будут хороши, если в будущем у меня будет много контактов.

Ответы [ 2 ]

3 голосов
/ 18 марта 2011

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

3 голосов
/ 18 марта 2011

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

Один из подходов - использовать разные файлы.

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