fflush()
обычно не требуется, когда вы читаете и пишете один и тот же поток stdio
. fputs()
и fgets()
оба обращаются к одному и тому же буферу ввода / вывода, поэтому очистка в этом случае обычно не требуется.
Однако есть некоторые ограничения. Несмотря на то, что используется один и тот же буфер, вам нужно что-то сделать для синхронизации между записью и чтением. Это может быть fflush()
, но также будет синхронизироваться, если вы используете fseek()
. И если вы хотите прочитать то, что вы только что написали, вы должны использовать fseek()
, чтобы вернуться туда, где вы начали писать; который будет синхронизироваться без необходимости fflush()
.
Но fflush()
действительно необходим, если какой-то другой процесс пытается прочитать файл, пока этот процесс записывает его. Вам нужно вызвать fflush()
для принудительного перевода данных из буфера ввода-вывода в фактический файл, чтобы другой процесс увидел изменения.