Описание функций Си

       

Setbuf



     setbuf

Функция Назначает буфер для потока stream.

Синтаксис #include

void setbuf(FILE *stream, char *buf);

Файл, содержащий stdio.h прототип

Описание Функция setbuf выделяет буфер buf для использова- ния в операциях ввода/вывода - вместо автомати- чески выделяемого буфера. Он будет использоваться только после того, как данный поток stream будет открыт.

При использовании функции setbuf, если параметр buf = NULL, ввод/вывод производится без буфера; в противном случае буфер используется.

Буфер должен быть длиной BUFSIZE байтов (данная константа определяется в файле stdio.h).

Стандартный ввод и вывод stdin и stdout не ис- пользуют буферов, если они не были переназначены; в противном случае, ввод и вывод производиться с буферизацией.

unbuffered (небуферизованный ввод/вывод) означа- ет, что символы, записываемые в поток, поступают непосредственно в файл или на устройство; в то время как buffered (буферизованный ввод/вывод) означает, что символы накапливаются и затем запи- сываются, как блок.

Функция setbuf может привести к непредвиденным результатам, если она вызывается для потока stream, причем не следует немедленно за операцией открытия или вызовом функции fseek. Вызов функции setbuf после того, как поток stream обработан без буферов, разрешен, и не вызовет ошибок.

Наиболее распространенной причиной ошибки являет- ся размещение буфера, в качестве automatiс (ло- кальной) переменной и затем попытка закрыть файл до выхода из функции, в которой был объявлен бу- фер.

Возвращаемое Нет. значение

Переносимость Функция поддерживаются на системах UNIX и стан- дартом ANSI C.

Смотрите также

Пример:

#include

/* BUFSIZE определено в stdio.h */ char buf[BUFSIZE];

int main(void) { int i; /* подключить буфер к стандартному потоку */ setbuf(stdout,buf); /* поместить в буфер символы */ puts("Это тест буферизованного вывода.\n"); puts("Этот вывод осуществляется в buf\n"); puts("и вы ничего не увидите, пока буффер не заполнится\n"); puts("или вы не сбросите его.\n"); /* сбросить поток */ fflush(stdout); return 0; }



Содержание раздела