C ++ setvbuf () - Стандартна бібліотека C ++

Функція 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; )

Коли ви запускаєте програму, результат буде:

… Це другий рядок Це перший рядок Це другий рядок

Цікаві статті...