Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Samostoyatelnye_po_S.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
672 Кб
Скачать
☆

Призначеня функцій бібліотеки введення-виведення

Функції бібліотеки введення-виведення призначені для читання даних з файлів (або отримання від пристроїв) та запису даних у файл (або пересилання на пристрій). Пристрої розглядаються системою як файли введення-виведення. Наприклад, пристрій необхідно відкривати і закривати точно так само, як і файл.

Деякі функції використовують для введення-виведення даних стандартні файли (пристрої) введення-виведення. Однак для більшості функцій ви можете визначати свої власні файли для введення та виведення даних. Для багатьох функцій можна використовувати покажчик на файл, тобто на структуру, яка містить ім'я файлу; для інших ви можете використовувати дескриптор файлу (позитивний цілий ідентифікатор, який присвоюється файлу при його відкритті).

Функції вводу-виводу, які зберігаються в бібліотеці мови C (libc.a), здійснюють потоковий ввід-висновок. Для доступу до цих функцій необхідно включити в програму файл stdio.h наступним чином:

# Include <stdio.h>

Макрокоманди

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

Для макрокоманди можна встановити контрольну точку за допомогою програми dbx program.

Макрокоманди зазвичай виконуються швидше, ніж функції, так як препроцесор заміняє макрокоманду на рядки коду.

При компіляції макрокоманд створюється більш громіздкий об'єктний код.

Файли, команди та функції, вживані для управління введенням-виводом, надають наступні типи інтерфейсів: Низькорівневий (низькорівневий інтерфейси введення-виведення) Базові функції відкриття і закриття файлів і пристроїв.

Потоковий (Потокові інтерфейси введення-виведення) Читання-запис даних в режимах каналу і FIFO.

Термінальний (Термінальні інтерфейси введення-виведення) Форматований висновок і буферизація.

Асинхронний (Асинхронні інтерфейси введення-виведення) Одночасне виконання операцій обробки та вводу-виводу.

Мовний (Створення мови введення за допомогою команд lex і yacc) Для інтерпретації даних введення-виведення команди lex і yacc генерують програми лексичного і синтаксичного аналізу.

Потокові інтерфейси введення-виведення

Потокові інтерфейси, що представляють дані у вигляді потоків байтів, не інтерпретуються системою, більш ефективні з погляду мережевих протоколів, ніж символьні інтерфейси. При читанні-запису потоку даних не відбувається підрозділу на окремі записи. Наприклад, при читанні 100 байтів по деякому каналу неможливо визначити, записав Чи процес відразу 100 байтів, або ж він записав два рази по 50 байтів, або ж ці 100 байтів надійшли від двох різних процесів.

Потоковий ввод-вивід організований у вигляді каналів або файлів FIFO ("першим увійшов - першим вийшов"). Файли FIFO схожі з каналами, оскільки дані в них можуть рухатися тільки в одному напрямку (зліва направо). Однак, на відміну від каналу, файлу FIFO можна привласнювати ім'я і до нього можуть звертатися не пов'язані з ним процеси. Іноді файл FIFO називають іменованих каналом. Оскільки у файлу FIFO є ім'я, його можна відкривати за допомогою стандартної функції fopen. Процедура відкриття каналу складніше: необхідно викликати функцію pipe, повертаючу дескриптор файлу, а потім за допомогою стандартної функції вводу-виводу fdopen зв'язати дескриптор відкритого файлу зі стандартним потоком вводу-виводу.

Доступ до потоковим інтерфейсам введення-виведення можна отримати за допомогою наступних функцій та макрокоманд:

fclose Закриває потік

feof, ferror, clearerr і fileno Перевіряє стан потоку

fflush Записує всі буферізованние на даний момент символи з потоку

fopen, freopen або fdopen Відкриває потік

fread і fwrite Виконує двійковий ввід

fseek, rewind, ftell, fgetpos і fsetpos Переміщає покажчик файлу в потоці

getc, fgetc, getchar і getw Витягує символ або слово з вхідного потоку

gets і fgets Отримує рядок з потоку

getwc, fgetwc або getwchar Витягує "широкий" символ з вхідного потоку

getws і fgetws Отримує рядок з потоку

printf, fprintf, sprintf, wsprintf, vprintf, vfprintf, vsprintf і vwsprintf

Друкує форматований вивід

putc, putchar, fputc або putw Поміщає символ або слово в потік

puts і fputs Записує рядок в протоку

putwc, putwchar і fputwc Поміщає символ або слово в потік

putws і fputws Поміщає рядок "широких" символів в потік

scanf, fscanf, sscanf або wsscanf Перетворює форматований ввід

setbuf, setvbuf, setbuffer і setlinebuf Виділяє буфер для потоку

ungetc і ungetwc Повертає витягнутий символ назад у вхідний потік

Питання для контролю:

1. Яке призначення функцій бібліотеки введення-виведення?

2. Які є макрокоманди для роботи з введенням – виведенням?

3. Що таке потокові інтерфейси введення – виведення?

Література:

1. Шилдт Г.: Пер. с англ. –М.: Издательский дом “Вильямс”, 2002. –704с. – с. 312-318

Урок №50

(згідно робочої навчальної програми)

Тема:Далекі покажчики і клавіатура

Питання:

1. Ближні покажчики (near)

2. Дальні покажчики (far)

3. Покажчики huge

Яке відношення мають покажчики до моделей пам'яті і Turbo C + +? Найбезпосередніше. Тип вибраній вами моделі пам'яті визначає тип за замовчуванням покажчиків, використовуваних для коду та даних (хоча ви можете явно оголосити покажчик або функцію як мають той чи інший конкретний тип, незалежно від поточної моделі пам'яті). Покажчики бувають чотирьох різновидів: near (16 бітів), far (32 біта), huge (також 32 біта) і segment (16 бітів).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]