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