Лекція 15. Керування буферізацією
2. Функції буферизації
У мові програмування С існує можливість створювати не системні буфери для обміну, або робити обмін небуферизуємим.
Це можна здійснити за допомогою функцій:
1. void setbuf(stream, buffer);
2. int setvbuf(stream, buf, type, size).
0 – виділено;
<>0 – Помилка при виділенні.
Функція setvbuf дозволяє користувачеві керувати буферизацією і розміром буфера для потоку stream. Stream може посилатися на відкритий файл. Масив, на який указує buf, використовується як буфер, якщо він не є NULL, тобто потік не є буферизованим. Якщо потік буферизований, використовується тип, вказаний по type; цей тип може бути або _IONBF, або _IOFBF, або _IOLBF. Якщо використовується тип _IOFBF, розмір буфера визначається по size; якщо використовується тип _IOLBF або _IONBF, потік є НЕбуферизованим, а size і buf ігноруються.
Коли програма завершується аварійно, те вихідний буфер може бути не вивантаженим, що може привести до втрати інформації.
Для вивантаження буфера можна використовувати функцію:
int fflush (FILE *stream)
Якщо заданий потік stream відкритий для виводу, то вміст буфера, пов'язаного з потоком stream функції fflush, записується у відповідний файл. Якщо потік відкритий для введення, то функція fflush очищає вміст буфера. Після виклику функції потік залишається відкритим. Для небуферизованого потоку застосування цієї функції не ефективно.
int flushall() - функція записує вміст усіх буферів, пов'язаних з відкритими input потоками, у відповідні файли. Усі буфери, пов'язані з відкритими потоками, очищаються; наступна операція читання (якщо вона є) зчитує нові дані із вхідних файлів у буфер. Після виклику функції flushall усі потоки залишаються відкритими.
Дана функція повертає кількість відкритих потоків (вхідних і вихідних). У випадку помилки значення, що вертається, НЕМАЄ.
Слід зазначити, що потрібно обов'язково закривати файли, робота з якими проводиться через буфери користувача.
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання
Вирівнювання тексту
Ширина абзацу