Обмін даними з файлами

Содержание

Слайд 2

функції введення/виведення низького рівня базуються на засобах обміну даними, що властиві


функції введення/виведення низького рівня базуються на засобах обміну даними, що

властиві конкретній операційній системі. Дані функції не виконують форматування даних і не застосовують буферизації. Функції блокоорієнтовані і забезпечують виграш у швидкодії тоді, коли обсяг блоку даних, що передається за одну операцію, кратний ємкості сектора диска (512 б). Прототипи даних функцій зберігаються в .
функції консольного введення/виведення доповнюють можливості високорівневих функцій щодо введення з клавіатури і керування текстовим режимом виведення інформації. Прототипи оголошені в заголовному файлі .
Слайд 3

Файлом вважається іменована сукупність даних, розташованих на зовнішньому носії, а також



Файлом вважається іменована сукупність даних, розташованих на зовнішньому

носії, а також термінальні пристрої (клавіатура, принтер …).
Для уніфікації процесів файлового обміну даними у функціях високого рівня використовують поняття потоку.
Потік (stream) – послідовність байтів, що надходять від певного логічного пристрою (файлу) або передаються у цей файл (пристрій).
Для узагальнення обміну даними у процесах введення/виведення здійснюється проміжна буферизація даних. Для кожного відкритого файлу в оперативній пам’яті створюється буфер обміну заданої ємності.
Слайд 4

Буфер введення Буфер виведення Дані програми Файл даних введення Файл даних

Буфер введення

Буфер виведення

Дані програми

Файл даних введення

Файл даних виведення

Буферизація мінімізує кількість

звертань до фізичних пристроїв, які найбільше гальмують процеси введення/виведення даних.

Оперативна пам'ять

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

Слайд 5

Перед введенням даних з конкретного файлу або записом даних у файл,

Перед введенням даних з конкретного файлу або записом даних у

файл, необхідно створити потік, пов’язаний з цим фізичним файлом. Створення потоку реалізує функція відкриття файлу, прототип якої оголошено так:
FILE *fopen (char *file_name, char * fmode);
Параметри функції є вказівниками на символьні рядки.
file_name – ім’я файлу, fmode– режим обміну даними.
За умови успішного відкриття потоку створюється спеціальна структура зі шаблоном FILE і функція повертає її адресу. Якщо ж потік відкрити не вдалось, функція повертає NULL.

Відкриття/закриття потоків

Слайд 6

Основні режими відкриття файла (другий параметр fmode функції fopen () ):


Основні режими відкриття файла (другий параметр fmode функції fopen

() ):
"r" – (від англ. read). Файл тільки для читання;
"w" - (від англ. write). Файл тільки для запису;
"a" – (від англ. append). Файл тільки для доповнення;
"r+" - файл для читання з можливістю запису в нього;
"w+" - файл для запису з можливістю читання з нього;
"a+" - файл для доповнення з можливістю читання.
Додатково в параметрі fmode можна задавати текстовий (t ) чи бінарний (b) режим відкриття потоку, за замовчуванням встановлюється текстовий режим.
Слайд 7

Приклад: FILE *p1, *p2; p1=fopen ("ishodn.dan", "r"); p2=fopen ("rezult.dan", "w"); Для


Приклад:
FILE *p1, *p2;
p1=fopen ("ishodn.dan", "r");
p2=fopen ("rezult.dan",

"w");
Для закриття потоків використовується функція
int fclose (FILE *fp);
fp - вказівник на потік, який треба закрити. При успішному використанні функції вона повертає значення 0.
Приклад:
fclose(f);
Слайд 8

На початку виконання кожної С-програми відкриваються стандартні потоки: stdin – потік

На початку виконання кожної С-програми відкриваються стандартні потоки:
stdin –

потік введення, який пов'язується з клавіатурою;
stdout – потік виведення даних на екран;
stderr – потік повідомлень про помилки, скеровуються
на екран.
Стандартні потоки можна перескеровувати (перепризначати), пов’язувати їх із заданим файлом чи пристроєм.
Перескерування потоків виконує функція
FILE *freopen (char *fname, char *fmode, FILE *fp);
Функція пов’язує потік fp з файлом fname. Режим доступу до даних задає параметр fmode .

Стандартні потоки, перескерування потоків