Функція setvbuf () в C ++ використовується для зміни або визначення режиму буферизації та розміру буфера.
прототип setvbuf ()
int setvbuf (FILE * потік, буфер char *, режим int, size_t size);
setvbuf()
Функція змінює режим буферизації даного потоку файлів до значення режиму.
Якщо буфер не є нульовим, розмір буфера дорівнює розміру, інакше функція автоматично виділяє буфер (на основі значення розміру).
Це визначається у файлі заголовка.
Параметри setvbuf ()
- потік: файловий потік.
- буфер: вказівник на буфер, який буде використовуватися потоком.
- режим: режим буферизації. Типи режимів буферизації:
- _IOFBF: повна буферизація
- _IOLBF: буферизація рядків
- _IONBF: відсутність буферизації
- size: Розмір буфера в байтах.
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; )
Коли ви запускаєте програму, результат буде:
… Це другий рядок Це перший рядок Це другий рядок