Если вы хотите создать буфер (и ни при каких обстоятельствах не записывать на диск до тех пор, пока файл не будет закрыт), тогда вам лучше всего записать в буфер в памяти (при условии, что он уместится в памяти , конечно), а затем запишите этот буфер за один раз и затем вызовите fclose()
.