fflush

Сбрасывает поток.

int fflush( 
   FILE *stream 
);

Параметры

  • stream
    Указатель на FILE структура.

Возвращаемое значение

fflush возвращает 0, если буфер был успешно очищается.Значение 0 возвращается также в тех случаях, когда указанный поток не имеет буфер или открыт только для чтения.Возвращаемое значение EOF указывает на ошибку.

ПримечаниеПримечание

If fflush возвращает EOFданные могут быть потерянные из-за ошибки записи.Настройка обработчика критической ошибки, безопасно отключить буферизация с самого setvbuf функции или подпрограммы, как использовать низкоуровневые операции ввода-вывода _open" _closeи _write вместо функций ВВОДА-ВЫВОДА потока.

Заметки

fflush функция очищает поток.Если файл, связанный с stream открытый для вывода fflush записи в этот файл содержимого буфера, связанного с потоком.Если поток открыт для ввода, fflush удаляет содержимое буфера.fflush инвертирует эффект любого прежнего вызова ungetc к stream.Кроме того, fflush(NULL) очищает все потоки, открытые для вывода.Поток остается открытым после вызова.fflush не влияет на небуферизованный поток.

Буферы обычно обслуживаны операционной системой, которая определяет оптимальное время записи данных автоматически на диск. если буфер заполнен, когда поток закрыт или при завершении обычно программа, не закрывая поток.Функция фиксация-к-диска библиотеки времени выполнения позволяет убедиться в том, что критические данные записываются непосредственно на диск, а не в буферы операционной системы.Без переписать существующую программу можно включить эту функцию, связывая файлы объектов программы с COMMODE.OBJ.В итоговом исполняемом файле, вызовы _flushall запишите содержимое всех буферов на диск.Только _flushall и fflush применяется к COMMODE.OBJ.

Дополнительные сведения о наблюдении за функцией фиксация-к-диска см. в разделе Поток ВВОДА-ВЫВОДА" fopenи _fdopen.

Эта функция блокирует вызывающий поток и поэтому потокобезопасным.Для non-блокируя версий см. в разделе _fflush_nolock.

Требования

Функция

Обязательный заголовок

fflush

<stdio.h>

Дополнительные сведения о совместимости см. Совместимость во введении.

Пример

// crt_fflush.c
#include <stdio.h>
#include <conio.h>

int main( void )
{
   int integer;
   char string[81];

   // Read each word as a string.
   printf( "Enter a sentence of four words with scanf: " );
   for( integer = 0; integer < 4; integer++ )
   {
      scanf_s( "%s", string, sizeof(string) );      
      printf( "%s\n", string );
   }

   // You must flush the input buffer before using gets. 
   // fflush on input stream is an extension to the C standard 
   fflush( stdin );   
   printf( "Enter the same sentence with gets: " );
   gets_s( string, sizeof(string) );
   printf( "%s\n", string );
}
  Этот тест
Этот тест
  Этот тест
Этот тест
Введите предложение 4 машинных слов с scanf: Этот тест
Данный объект 
является
объект
тест
Введите одно и то же предложение with возвращает: Этот тест
Этот тест

Эквивалент в .NET Framework

System:: Ввода-вывода:: FileStream:: Очистить

См. также

Ссылки

Поток ВВОДА-ВЫВОДА

fclose, _fcloseall

_flushall

setvbuf