Функцията setvbuf () в C ++ се използва за промяна или задаване на режим на буфериране и размер на буфера.
прототип на setvbuf ()
int setvbuf (FILE * поток, char * буфер, int режим, size_t размер);
Най setvbuf()
функция сменя режима на буфериране на даден файл поток към стойността на готовност.
Ако буферът не е нула, размерът на буфера е размер, в противен случай функцията автоматично разпределя буфер (въз основа на стойността на размера).
Той се определя в заглавния файл.
setvbuf () Параметри
- поток: Файлов поток.
- буфер: указател към буфера, който ще се използва от потока.
- режим: Буферен режим. Видовете буферни режими са:
- _IOFBF: пълно буфериране
- _IOLBF: буфериране на редове
- _IONBF: няма буфериране
- размер: Размерът на буфера в байтове.
setvbuf () Върната стойност
На setvbuf()
връща функция нула за успех и различна от нула при неуспех.
Пример: Как работи функцията setvbuf ()
#include #include #define SIZE 1024 using namespace std; int main() ( char buffer(SIZE) = "… "; char str() = "This is first lineThis is second line"; FILE *fp = fopen("test.txt","wb+"); /* no buffering, buffer remains unchanged */ setvbuf(fp,buffer,_IONBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; /* line buffering, only a single line is buffered */ setvbuf(fp,buffer,_IOLBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; /* full buffering, all the contents are buffered */ setvbuf(fp,buffer,_IOFBF,SIZE); fwrite(str, sizeof(str), 1, fp); cout << buffer << endl; fclose(fp); return 0; )
Когато стартирате програмата, изходът ще бъде:
… Това е втори ред Това е първи ред Това е втори ред