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

Функція setbuf () в C ++ встановлює внутрішній буфер, який буде використовуватися для операцій вводу-виводу потоком.

прототип setbuf ()

 void setbuf (FILE * потік, char * буфер);

Якщо буфер не є нульовим, це еквівалентно виклику setvbuf (stream, buffer, _IOFBF, BUFSIZ).

Якщо буфер є нульовим, це еквівалентно виклику setvbuf (stream, NULL, _IONBF, 0). У цьому випадку буферизація вимкнена.

Це визначається у файлі заголовка.

параметри setbuf ()

  • потік: файловий потік.
  • buffer: вказівник на буфер, який може бути нульовим чи ні. Якщо воно є нульовим, буферизація вимкнена, інакше має бути принаймні BUFSIZ байт.

setbuf () Повернене значення

Жоден

Наведені нижче 2 приклади ілюструють використання функції setbuf (). Обидві ці програми використовують операції з файлами. У першому прикладі буфер встановлюється за допомогою setbuf () для внутрішнього зберігання вмісту файлу.

У наступному прикладі оператор setbuf(fp, NULL)вимикає буферизацію. Отже, для читання вмісту файлу використовується fread ().

Приклад 1: Як працює функція setbuf ()

 #include #include using namespace std; int main () ( char str() = "Buffered Stream"; char buffer(BUFSIZ); FILE *fp; fp=fopen ("test.txt","wb"); setbuf(fp,buffer); fwrite(str, sizeof(str), 1, fp); fflush(fp); fclose(fp); cout << buffer; return 0; )

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

 Буферний потік

Приклад 2: функція setbuf () з вимкненою буферизацією

 #include #include using namespace std; int main () ( char str() = "Unbuffered Stream"; char strFromFile(20); FILE *fp; fp=fopen ("test.txt","wb+"); setbuf(fp,NULL); fwrite(str, sizeof(str), 1, fp); fflush(fp); /* We need to rewind the file pointer and read the file because the data from test.txt isn't saved in any buffer */ rewind(fp); fread(strFromFile, sizeof(strFromFile), 1, fp); fclose(fp); cout << strFromFile; return 0; )

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

 Небуферований потік

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