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. ПРИМЕЧАНИЕ Распространенной ошибкой является выделение под буфер локальной переменной блока без закрытия потока при вы- ходе из блока.