Как открыть указатель файла при открытии файла в режиме добавления? - PullRequest
1 голос
/ 28 октября 2010

Я пытаюсь вставить некоторые данные в середину файла.Я открыл файл в режиме добавления как:

file = fopen(msg->header.filename, "ab");

Затем я попытался выполнить поиск нужного смещения в файле следующим образом:

fseek(file, msg->header.offset, SEEK_SET);

Однако, когда я затем попыталсяfwrite следующим образом:

int bytesWritten = fwrite(msg->message, 1, msg->header.length, file);

Все данные записываются в конец файла, а не в его середину.

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

1 Ответ

6 голосов
/ 28 октября 2010

Посмотрите на спецификацию функции ANSI C fopen для режима "a" (APPEND): Все операции записи выполняются в конце файла. Ваш fseek будет игнорироваться.

...