Функция setvbuf

Содержание

#include <stdio.h>
int setvbuf(FILE *stream, char *buf, int mode, size_t size);

Функция setvbuf() позволяет программисту задать буфер, его размер и режим работы с указанным потоком. Массив символов, адресуемый параметром buf, используется в качестве буфера потока для операций ввода/вывода. Размер буфера устанавливается с помощью параметра size, а режим mode определяет, как будет выполняться буферизация. Если параметр buf равен нулю, функция setvbuf() выделяет собственный буфер.

В версии C99 к параметрам stream и buf применен квалификатор restrict.

Возможными значениями параметра mode являются _IOFBF, _IONBF и _IOLBF, которые определены в заголовочном файле <stdio.h>. Если параметр mode равен _IOFBF, для буферизации используется полный объем буфера. Если mode равен _IOLBF, поток будет буферизирован построчно, т.е. содержимое буфера будет дозаписываться в поток при каждой записи в поток вывода символа новой строки. Содержимое буфера также дозаписывается в поток при заполнении буфера. При чтении из входного потока появление разделителя строк приведет к прекращению подкачки в буфер. Если установлен режим _IONBF, поток не буферизируется.

Функция setvbuf() возвращает нуль при успешном выполнении, а в противном случае ненулевое значение.

Пример


Данный фрагмент программы устанавливает построчный режим вывода потока fp в буфер размером 128 символов.


#include <stdio.h>
char buffer[128];
.
.
.
setbuf(fp, buffer);

Зависимые функции


setbuf()