setvbuf
Primary tabs
Forums:
http://glagolew2010.narod.ru/13/setvbuf.htm
#include stdio.h> int setvbuf(FILE *stream, char *buf, int mode, size_t size);
Функция setvbuf() позволяет программисту задать буфер, его размер и режим работы с указанным потоком. Массив символов, адресуемый параметром buf, используется в качестве буфера потока для операций ввода/вывода. Размер буфера устанавливается с помощью параметра size, а режим mode определяет, как будет выполняться буферизация. Если параметр buf равен нулю, функция setvbuf() выделяет собственный буфер.
В версии C99 к параметрам stream и buf применен квалификатор restrict.
Возможными значениями параметра mode являются =
- _IOFBF
- _IONBF
- _IOLBF
которые определены в заголовочном файле
Причём:
- Если параметр mode равен _IOFBF, для буферизации используется полный объем буфера.
- Если mode равен _IOLBF, поток будет буферизирован построчно, т.е. содержимое буфера будет дозаписываться в поток при каждой записи в поток вывода символа новой строки. Содержимое буфера также дозаписывается в поток при заполнении буфера. При чтении из входного потока появление разделителя строк приведет к прекращению подкачки в буфер.
- Если установлен режим _IONBF, поток не буферизируется.
Функция setvbuf() возвращает нуль при успешном выполнении, а в противном случае ненулевое значение.
Пример
Данный фрагмент программы устанавливает построчный режим вывода потока fp в буфер размером 128 символов.
#include stdio.h> char buffer[128]; . . . setbuf(fp, buffer);
- Log in to post comments
- 2115 reads