Функция fflush

Прототип функции 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;
  }
}
Автор: admin
Дата: 10.09.2012
Поделиться:

Комментарии

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.