Лекція 13. Файли
| Сайт: | Навчально-інформаційний портал НУБіП України |
| Курс: | Основи програмування |
| Книга: | Лекція 13. Файли |
| Надруковано: | Гість-користувач |
| Дата: | неділя, 15 лютого 2026, 19:42 |
1. Особливості роботи з файлами
Як і в інших мовах, для роботи із зовнішньою пам'яттю в мові С використовують файли.
Кількість елементів у файлі не фіксується. Кінець файлу зв'язується з іменованою константою End Of File (EOF).(-1)
Однак, на відміну від мови Паскаль внутрішня структура файлу не визначається - які саме елементи становлять файл. Уважається, що файл складається з послідовності байтів. А що саме являють собою ці байти і як їх коректно використовувати - це лежить на відповідальності програміста.
Такі поняття як "вікно" файлу, "файлова змінна" - не вживаються. Формально файл задається покажчиком
FILE *iot; // FILE в верхньому регістрі.
Звідси зрозуміло, що робота з файлами організована засобами операційної системи, а тип структури FILE є певною перехідною ланкою.
2. Функції роботи з файлами
У мові С немає власних засобів роботи з файлами, а всі дії реалізуються за допомогою функцій бібліотек С.
Ці функції поділяються на три класи:
1. верхнього рівня (з використанням терміну “потік”);
2. для консольного терміналу та порту з безпосереднім звертанням до них;
3. нижнього рівня (з використанням терміну "дескриптор").
3. Організація роботи з файлами
Поточний обмін даними
Усі дані можна розглядати як послідовність окремих байтів, або потік. Для користувача потік - це або файл на диску, або фізичне обладнання (дисплей або принтер).
Хоча потік є послідовністю окремих байтів, функції обміну для потоку дозволяють обробляти дані різного розміру й формату (від одного символу до великих структур). При цьому здійснюється форматний або безформатний обмін в буфері.
Відкриття потоків
Для виконання операцій з файлом його попередньо необхідно відкрити. Для цього використовується функція fopen ().
4. Режими доступу до файлу
Існує три режими доступу до файлу:
1. Читання (read):
"r"- відкрити файл для читання, файл повинен існувати;
"r+" - відкрити файл одночасно для читання й запису, файл повинен існувати;
2. Запис (write):
"w" - відкрити порожній файл для запису, якщо файл існує, він стирається;
"w+" - відкрити порожній файл для читання й запису, якщо файл існує, він стирається;
3. Доповнення (append):
"a"- відкрити файл для читання й додавання починаючи з кінця, якщо файлу немає він створюється для читання або запису ( курсор наприкінці файлу).
Відзначимо, що коли файл відкривається для запису, то увесь його зміст стає недоступним, тобто в логічнім розумінні втрачається. При доповненні зміст файлу зберігається й покажчик установлюється на кінець файлу.
5. Типи файлів
Функція fopen повертає покажчик на структуру FILE, яка описує даний відкритий файл.
Існує два типи файлів:
t - відкрити в текстовому (перетворюючому) режимі, тобто при введенні комбінація "Повернення каретки - переклад рядка" (ПК- ПР) перетворюється до єдиного символу "перекладу рядка". При виведенні символ перекладу рядка перетворюється в комбінацію ПК-ПР;
b - відкрити у двійковому (неперетворюючому) режимі;
Якщо t або b у рядку type не задається, режим перетворення визначається змінної _fmode і режимом, установлюваним за замовчуванням.
6. Стандартні покажчики потоків
Стандартні покажчики потоків
З кожною задачею автоматично пов’язується 5 потоків:
1. стандартного вводу (stdin);
2. стандартного виводу (stdout);
3. стандартного виводу повідомлень про помилки (stderr);
4. додаткового потоку (stdaux);
5. стандартного потоку (stdprn).
Однак іноді, наприклад, при спробі відкрити неіснуючий файл для читання, Функція fopen цього зробити не може. Тому, якщо файл не вдалося відкрити, функція fopen повертає значення NULL, яке визначалося в stdio.h як 0, крім того, у глобальну змінну errno буде записано код помилки.
7. Закриття потоків
Закриття потоків здійснюється для:
· окремого потоку функцією fclose (iot)
· всіх потоків - функцією fcloseall().
Остання функція НЕ закриває стандартні 5 потоків.
При закритті потоків звільнюються всі буфери, ліквідуються покажчики на файл і, якщо потрібно, підготовляється файл для зберігання.
Якщо потоки не закриваються явно, то вони закриваються автоматично при завершенні програми. Оскільки кількість відкритих потоків обмежена, тo краще потоки в програмі закривати явно.
Шрифти
Розмір шрифта
Колір тексту
Колір тла
Кернінг шрифтів
Видимість картинок
Інтервал між літерами
Висота рядка
Виділити посилання
Вирівнювання тексту
Ширина абзацу