fflush()

Очистить буферы потока

Прототип:

#include <stdio.h>
int fflush( FILE *fp );

Аргументы:

fp
NULL или поток, чьи буферы необходимо очистить.

Библиотека:

libc

Описание:

Если поток, определяемый fp, открыт для вывода или обновления, функция fflush() вызывает запись любых буферизированных (смотрите setvbuf()), но незаписанных данных в файловый дескриптор, связанный с потоком (смотрите fileno()).

Если файл, определяемый fp, открыт для ввода и обновления, функция fflush() отменяет эффект любой предыдущей операции ungetc() для потока.

Если fp равен NULL, все открытые потоки очищаются.

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

0
Успешное завершение.
EOF
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EAGAIN
Флаг O_NONBLOCK установлен для файлового дескриптора fp, и операция записи для процесса будет отложена.
EBADF
Файловый дескриптор fp некорректен.
EFBIG
Одна из следующих причин:
EINTR
Функция fflush() прервана сигналом.
EIO
Одна из следующих причин:
ENOSPC
На устройстве, содержащем файл, не осталось свободного места.
ENXIO
Запрос был сделан от лица несуществующего устройства, либо запрос лежит вне возможностей устройства.
EPIPE
Попытка записи в канал или FIFO, которые не были открыты для чтения никаким процессом. Потоку также отправляется сигнал SIGPIPE.

Примеры:

#include <stdio.h>
#include <stdlib.h>
int main( void )
{
printf( "Press Enter to continue..." );
fflush( stdout );
getchar();
return (EXIT_SUCCESS);
}

Классификация:

ANSI, POSIX 1003.1

Безопасность использования
Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

errno, fgetc(), fgets(), fileno(), flushall(), fopen(), getc(), gets(), setbuf(), setvbuf(), ungetc()




Предыдущий раздел: Описание API системной библиотеки