Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемЭлеонора Бурых
1 Обмін даними з файлами У компілятор мови С не включено спецзасобів для введення/виведення даних, тому обмін даними реалізовано через бібліотечні функції. Бібліотеки більшості систем програмування мови С підтримують функції для введення/виведення даних на трьох рівнях: високорівневе, т.зв. потокоорієнтоване введення/ виведення - використовує однаковий підхід у програмуванні обміну даними з файлами та зовнішніми пристроями і єдиний інтерфейс. Всі файли та дані з пристроїв розглядаються як неструктуровані набори байтів – потоки. П рототипи функцій записані в заголовному файлі
2 функції введення/виведення низького рівня базуються на засобах обміну даними, що властиві конкретній операційній системі. Дані функції не виконують форматування даних і не застосовують буферизації. Функції блокоорієнтовані і забезпечують виграш у швидкодії тоді, коли обсяг блоку даних, що передається за одну операцію, кратний ємкості сектора диска (512 б). Прототипи даних функцій зберігаються в. функції консольного введення/виведення доповнюють можливості високорівневих функцій щодо введення з клавіатури і керування текстовим режимом виведення інформації. Прототипи оголошені в заголовному файлі.
3 Файлом вважається іменована сукупність даних, розташованих на зовнішньому носії, а також термінальні пристрої (клавіатура, принтер …). Для уніфікації процесів файлового обміну даними у функціях високого рівня використовують поняття потоку. Потік (stream) – послідовність байтів, що надходять від певного логічного пристрою (файлу) або передаються у цей файл (пристрій). Для узагальнення обміну даними у процесах введення/виведення здійснюється проміжна буферизація даних. Для кожного відкритого файлу в оперативній памяті створюється буфер обміну заданої ємності.
4 Буфер введення Буфер виведення Дані програми Файл даних введення Файл даних виведення Буферизація мінімізує кількість звертань до фізичних пристроїв, які найбільше гальмують процеси введення/виведення даних. Оперативна пам'ять Високорівневий потоковий обмін даними – це обмін байтами з фізичними файлами і логічними пристроями через систему буферизації, що дає змогу опрацьовувати дані різних форматів і розмірів.
5 Перед введенням даних з конкретного файлу або записом даних у файл, необхідно створити потік, повязаний з цим фізичним файлом. Створення потоку реалізує функція відкриття файлу, прототип якої оголошено так: FILE *fopen (char *file_name, char * fmode); Параметри функції є вказівниками на символьні рядки. file_name – імя файлу, fmode– режим обміну даними. За умови успішного відкриття потоку створюється спеціальна структура зі шаблоном FILE і функція повертає її адресу. Якщо ж потік відкрити не вдалось, функція повертає NULL. Відкриття/закриття потоків
6 Основні режими відкриття файла (другий параметр fmode функції fopen () ): "r" – (від англ. read). Файл тільки для читання; "w" - (від англ. write). Файл тільки для запису; "a" – (від англ. append). Файл тільки для доповнення; "r+" - файл для читання з можливістю запису в нього; "w+" - файл для запису з можливістю читання з нього; "a+" - файл для доповнення з можливістю читання. Додатково в параметрі fmode можна задавати текстовий (t ) чи бінарний (b) режим відкриття потоку, за замовчуванням встановлюється текстовий режим.
7 Приклад: FILE *p1, *p2; FILE *p1, *p2; p1=fopen ("ishodn.dan", "r"); p1=fopen ("ishodn.dan", "r"); p2=fopen ("rezult.dan", "w"); p2=fopen ("rezult.dan", "w"); Для закриття потоків використовується функція int fclose (FILE *fp); fp - вказівник на потік, який треба закрити. При успішному використанні функції вона повертає значення 0. Приклад: fclose(f);
8 На початку виконання кожної С-програми відкриваються стандартні потоки: stdin – потік введення, який пов'язується з клавіатурою; stdout – потік виведення даних на екран; stderr – потік повідомлень про помилки, скеровуються на екран. Стандартні потоки можна перескеровувати (перепризначати), повязувати їх із заданим файлом чи пристроєм. Перескерування потоків виконує функція FILE *freopen (char *fname, char *fmode, FILE *fp); Функція повязує потік fp з файлом fname. Режим доступу до даних задає параметр fmode. Стандартні потоки, перескерування потоків
9 Значення та форми завдання параметрів fname і fmode такі ж, як для функції fopen (). За умови успішного виконання функція повертає вказівник на створений потік, а в разі помилки – NULL. Приклад: перше звертання до puts() викликає Приклад: перше звертання до puts() викликає виведення повідомлення на екран, а друге – у файл. #include #include void main() { puts(Виведення на екран); puts(Виведення на екран); freopen (example.xz, w,stdout); freopen (example.xz, w,stdout); puts(Виведення в файл); puts(Виведення в файл);}
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.