Описание функций C (Си) / C++ - setvbuf

Описание функций C (Си) / C++ - setvbuf



#include

int setvbuf(stream, buf, type, size);

FILE *stream; указатель на структуру FILE
char *buf; буфер, назначенный пользователем.
int type тип буфера:
_IONBF - нет буфера;
_IOFBF - полная буферизация;
_IOLBF - строковая буферизация.
int size; размер буфера.

Описание.

Функция setvbuf позволяет пользователю управлять буфериза-
цией и размером буфера для потока stream. Stream может ссылаться
на открытый файл. Массив, на который указывает buf, используется
как буфер, если он не является NULL, т.е. поток не является буфе-
ризованным. Если поток буферизованный, используется тип, опреде-
ленный по type; этот тип может быть либо _IONBF, либо _IOFBF, ли-
бо _IOLBF. Если используется тип _IOFBF, размер буфера определя-
ется по size; если используется тип _IOLBF или _IONBF, поток яв-
ляется небуферизованным, а size и buf игнорируются.

ЗНАЧЕНИЕ ТИПА ЕГО СМЫСЛ

_IONBF Буфер не используется, несмотря на
присутствие size и buf

_IOFBF Полная буферизация, если buf не яв-
ляется NULL; поэтому buf исполь-
зуется в качестве буфера, а size -
его размера

_IOLBF Аналогично _IOFBF

Истинное значение size обычно больше 0, но меньше макси-
мального целого размера.

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

Эта функция возвращает ненулевое значение, если тип или
размер буфера неправильно определен, и возвращает значение 0, ес-
ли все определено верно.
См. также setbuf, fflush, fopen, fclose.


Пример:

#include

char buf[1024];

FILE *stream1, *stream2;


main()

{
stream1 = fopen("data1", "r");
stream2 = fopen("data2", "w");

/* Stream1 будет использовать буфер размером 1024 байта и
назначенный пользователем, а stream2 является небуферизованным */

if (setvbuf(stream1, buf, _IOFBF, sizeof(buf)) !=0)
printf("Incorrect type or size of buffer1n");
if (setvbuf(stream2, _IONBF, 0) != 0)
printf("Incorrect type or size of buffer2n");
}.






Опубликовал admin
11 Мар, Вторник 2008г.



Программирование для чайников.