Ответ 1
При открытии в режиме добавления указатель файла возвращается до конца файла перед каждой записью. Вы можете переместить указатель fseek
для чтения, но как только вы вызываете функцию, которая записывает в файл, указатель возвращается в конец файла.
Или, говоря иначе, чтобы предотвратить потерю данных, позиция "указателя записи" переопределяет положение "указателя чтения". После любого добавления указатель записи отскакивает от нового EOF
.
Ответ на эту ссылку ссылается на соответствующий раздел стандарта C.
Используйте режим "w+"
, если вы хотите записать произвольные места в файле. Существующий файл будет перезаписан.
Если вы хотите сначала добавить существующий файл, но затем fseek
в произвольное место, используйте "r+"
, а затем fseek(f, 0, SEEK_END)
.