1) Не открывать в режиме добавления.
Когда вы открываете в режиме добавления, все записи идут в конец файла, независимо от позиции поиска.
http://www.opengroup.org/onlinepubs/009695399/functions/fopen.html
Открытие файла в режиме добавления (как
первый персонаж в режиме
аргумент) должен вызвать все последующие
пишет в файл для принудительного
тогда текущий конец файла, независимо
промежуточных вызовов fseek ().
2) Открытие без «а» все равно не будет делать то, что вы хотите. Вставить в файл с помощью файловых операций ANSI / POSIX невозможно, поскольку, учитывая то, как большинство файловых систем хранят свои данные, вставка не является простой операцией.
Вам нужно либо открыть новый файл, записать новые данные, а затем добавить старый файл, либо вам придется возиться с перетасовкой данных в блоках. Любой из этих вариантов очень неэффективен для больших файлов по сравнению с добавлением в конце, не говоря уже о склонности к ошибкам, если вам нужна программа или машина, чтобы иметь возможность неожиданно умереть без повреждения данных. Поэтому, если это файл журнала или аналогичный, вероятно, его стоит изменить, чтобы вы могли записать новые данные до конца, а затем полностью изменить их при подготовке отчета из журнала.