SETBUF(3S) SETBUF(3S)
НАЗВАНИЕ
setbuf, setvbuf - назначение буферов для потока
СИНТАКСИС
#include
void setbuf (stream, buf)
FILE *stream;
char *buf;
void setvbuf (stream, buf, type, size)
FILE *stream;
char *buf;
int type, size;
ОПИСАНИЕ
Функция setbuf может быть использована после открытия
потока, но перед тем, как выполнена первая из процедур
ввода/вывода. При этом массив, на который указывает ар-
гумент buf, будет использоваться вместо автоматически
назначаемых буферов. Если значение buf равно NULL,
ввод/вывод будет полностью небуферизованным.
Требуемый размер буфера определяется константой BUFSIZ,
заданной во включаемом файле :
char buf [BUFSIZ];
Функция setvbuf также может быть использована сразу
после открытия потока, но перед тем, как выполнена пер-
вая из процедур ввода/вывода. Аргумент type определяет
тип буферизации. Допустимы следующие типы буферизации,
описанные в :
_IOFBF
Полная буферизация ввода/вывода.
_IOLBF
Строчная буферизация вывода; буфер вывода выталки-
вается при выдаче символа перевода строки, запол-
нении буфера или запросе на ввод.
_IONBF
Полное отсутствие буферизации ввода/вывода.
Если значение buf не равно NULL, массив, на который
указывает buf, будет использоваться вместо автоматичес-
ки назначаемых буферов. Аргумент size задает размер ис-
пользуемого буфера. Константа BUFSIZ, определенная во
включаемом файле , является разумным значением
для размера буфера. Если ввод/вывод небуферизован, то
аргументы buf и size игнорируются.
По умолчанию вывод на терминал является строчно буфери-
зованным, а весь остальной ввод/вывод буферизуется пол-
ностью.
СМ. ТАКЖЕ
fopen(3S), getc(3S), malloc(3C), putc(3S), stdio(3S).
ДИАГНОСТИКА
Если указано некорректное значение для аргументов type
или size, то функция setvbuf возвращает ненулевое зна-
чение. В противном случае результат равен 0.
ПРИМЕЧАНИЯ
Распространенной ошибкой является выделение под буфер
локальной переменной блока без закрытия потока при вы-
ходе из блока.
|