Прототип функции 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; } }
Комментарии