int fflush (FILE * fluxo);
A função fflush descarrega os buffers de saída de um fluxo de dados. Isto é, qualquer dado ainda não escrito no disco e guardado nos buffers temporários de saída, é escrito. Com isso, o buffer é limpo.
Essa função deve ser utilizada apenas em fluxos que suportem saída de dados; ela não deve ser utilizada em fluxos de entrada (exemplo: stdin). Algumas implementações permitem o uso da função em fluxos de entrada, limpando o buffer de entrada. Porém, essa funcionalidade não é portável e portanto pode não funcionar dependendo do ambiente, do compilador e de outros fatores menores.
Quando um arquivo é fechado, os buffers são descarregados automaticamente. Não é necessário chamar essa função antes de fechar o arquivo com fclose.
O fluxo continua funcionando normalmente após o uso do fflush.
fluxo - ponteiro para um objeto FILE bufferizado
Se o arquivo foi removido com sucesso, fflush
retorna 0.
Em caso de erro, a função retorna EOF e marca o indicador de erro.
#include <stdio.h>
int main() {
FILE* arquivo = fopen("arquivo.txt", "w");
if(arquivo == NULL) {
fprintf(stderr, "Erro ao criar o arquivo.");
return 1;
}
fprintf(arquivo, "Testando %d", 1);
/* os dados podem não ter sido escritos no disco ainda */
fflush(arquivo);
/* agora "Testando 1" com certeza já foi escrito no disco */
fprintf(arquivo, "Testando %d", 2);
/* os dados podem não ter sido escritos no disco ainda */
fclose(arquivo);
/* agora "Testando 2" com certeza já foi escrito no disco */
return 0;
}