Прототип функции fflush:
int fflush( FILE * filestream );
Заголовочный файл
| Название | Язык |
|---|---|
| stdio.h | С |
| cstdio | С++ |
Описание
Если данный поток был открыт для записи (или, если он был открыт для обновления и последняя операция ввода/вывода была операцией вывода) любые незаписанные данные в выходном буфере записываются в файл.
Если аргумент является нулевым указателем, то открытый файл очищается. Поток остается открытым после этого вызова.
Во всех других случаях, поведение зависит от конкретной реализации библиотеки. В некоторых реализациях, очистка потока, открытого для чтения вызывает очистку его входного буфера (но это не стандартное поведение).
Поток остается открытым после вызова функции fflush.
Когда файл закрывается, по причине вызова функции fclose или потому, что завершается работа программы, все буферы, связанные с ним, автоматически очищаются.
Параметры:
- filestream
Указатель на объект типаFILE, который определяет буфер потока.
Возвращаемое значение
Нулевое значение указывает на успех.
При возникновении ошибки, возвращается EOF.
Пример: исходный код программы
В файлах открытых для обновления (например, открытые для чтения и записи), поток должен быть обнулён после выхода, прежде чем выполнять операции ввода. Это может быть сделано либо путем позиционирования (fseek, fsetpos, rewind) или явно, вызвав функцию fflush, как в этом примере:
//пример использования функции fflush
#include <iostream>
#include <cstdio>
char buffer[80];
int main()
{
FILE * ptrFile = fopen("example.txt", "r+");
if (ptrFile == NULL) perror ("Ошибка открытия файла");
else
{
fputs ("тест", ptrFile);
fflush (ptrFile); // очистка потока
fgets(buffer, 80, ptrFile);
puts (buffer);
fclose (ptrFile);
return 0;
}
}
Комментарии