#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);