CodeNet / Языки программирования / C / C++ / Linux/Unix / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
setvbuf
SETVBUF #include <stdio.h> 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 <stdio.h> 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 buffer1\n"); if (setvbuf(stream2, _IONBF, 0) != 0) printf("Incorrect type or size of buffer2\n"); }.