Как переписать структуру внутри файла, используя C?
Я сохраняю структуру в файл.dat. Предположим, мне нужно отредактировать одну конкретную структуру, как мне поступить? Я сделал следующее:
ptFile = fopen("funcionarios.dat", "ab+");
fseek(ptFile, index*sizeof(strFunc), SEEK_SET); //places the pointer at the struct I want
fwrite(&newStruct, sizeof(strFunc), 1, ptFile); //adds the new struct
Итак, как вы видите, я хочу обновить свой файл с помощью newStruct.
Функции fwrite возвращают 1, но не заменяют нужную мне строку (и соседние строки, если я использовал пропущенный индекс) и не добавляют новую структуру в файл. Это просто ничего не делать!
Есть идеи?
Я сделал это, прочитав все структуры, заменив index-struct моим newStruct и записав файл со всеми структурами, но я ищу лучший способ сделать это.
Заранее спасибо.
1 ответ
Решение
fopen(.., "ab+")
просит добавить режим:
a+ Open for reading and appending (writing at end of
file). The file is created if it does not exist. The
initial file position for reading is at the beginning
of the file, but output is always appended to the end
of the file.
Вам наверное нужно r+
режим, который как это ни парадоксально означает запись:
r+ Open for reading and writing. The stream is
positioned at the beginning of the file.