У меня смутные воспоминания о требовании, которое вы называете fflush
раньше
fseek
, но у меня нет моей копии стандарта C, доступной для проверки.
(Если вы этого не сделаете, было бы неопределенное поведение или определение реализации,
или что-то в этом роде.) Общий стандарт Unix указывает, что:
Если самая последняя операция, кроме ftell (), для данного потока
fflush (), смещение файла в базовом описании открытого файла
должен быть скорректирован, чтобы отразить местоположение, указанное fseek ().
[...]
Если поток доступен для записи и буферизованные данные не были записаны в
базовый файл, fseek () должен привести к тому, что неписанные данные будут
записывается в файл и должен пометить поля st_ctime и st_mtime
файл для обновления.
Это помечено как расширение стандарта ISO C, поэтому вы не можете рассчитывать на него, за исключением платформ Unix (или других платформ, которые дают аналогичные гарантии).