Лекція 15. Керування буферізацією

2. Функції буферизації

У мові програмування С існує можливість створювати не системні буфери для обміну, або робити обмін небуферизуємим. 

Це можна здійснити за допомогою функцій:

1. void setbuf(stream, buffer);

2. int setvbuf(stream, buf, type, size)

0 – виділено;

<>0 – Помилка при виділенні.

Функція setvbuf дозволяє користувачеві керувати буферизацією і розміром буфера для потоку streamStream може посилатися на відкритий файл. Масив, на який указує buf, використовується як буфер, якщо він не є NULL, тобто потік не є буферизованим. Якщо потік буферизований, використовується тип, вказаний по type; цей тип може бути або _IONBF, або _IOFBF, або _IOLBF. Якщо використовується тип _IOFBF, розмір буфера визначається по size; якщо використовується тип _IOLBF або _IONBF, потік є НЕбуферизованим, а size і buf ігноруються.

Коли програма завершується аварійно, те вихідний буфер може бути не вивантаженим, що може привести до втрати інформації.

Для вивантаження буфера можна використовувати функцію:

int fflush (FILE *stream)

Якщо заданий потік stream відкритий для виводу, то вміст буфера, пов'язаного з потоком stream функції fflush, записується у відповідний файл. Якщо потік відкритий для введення, то функція fflush очищає вміст буфера. Після виклику функції потік залишається відкритим. Для небуферизованого потоку застосування цієї функції не ефективно.

int flushall() функція записує вміст усіх буферів, пов'язаних з відкритими input потоками, у відповідні файли. Усі буфери, пов'язані з відкритими потоками, очищаються; наступна операція читання (якщо вона є) зчитує нові дані із вхідних файлів у буфер. Після виклику функції flushall усі потоки залишаються відкритими.

Дана функція повертає кількість відкритих потоків (вхідних і вихідних). У випадку помилки значення, що вертається, НЕМАЄ.

Слід зазначити, що потрібно обов'язково закривати файли, робота з якими проводиться через буфери користувача.

Доступність

Шрифти Шрифти

Розмір шрифта Розмір шрифта

1

Колір тексту Колір тексту

Колір тла Колір тла

Кернінг шрифтів Кернінг шрифтів

Видимість картинок Видимість картинок

Інтервал між літерами Інтервал між літерами

0

Висота рядка Висота рядка

1.2

Виділити посилання Виділити посилання

Вирівнювання тексту Вирівнювання тексту

Ширина абзацу Ширина абзацу

0