logo
ООП для Заоч / Пинчук Лозовская Программир на С

10.2. Бібліотека с

Для програмування операцій введення з файлу й виведення у файл із форматним перетворенням використовуються функції fscanf та fprintf з бібліотечного модулю stdin.h. Ці функції є аналогами функцій консольного введення/виведення printf і scanf про які мова вже була. Параметри цих функцій записуються в такий спосіб:

fscanf(f,format,p1,p2, ...);

fprintf(f,format,e1, e2, ...);

Тут f - змінна типу FILE*. Таку змінну називають покажчиком на файл або файловою змінною. Іноді таку змінну (разом з відповідним файлом) називають потоком. Ініціалізувати файлову змінну можна за допомогою функції fopen, що відкриває зазначений файл і повертає покажчик на нього. Прототип цієї функції має такий вигляд:

FILE* fopen(char* filename, char* mode);

Тут filename - ім'я файлу, що відкривається, mode - параметр, що вказує на режим його наступної роботи. Нижче наведені значення параметру mode.

"r" - відкрити файл для читання;

"w" - створити файл і відкрити для запису;

"a" - відкрити існуючий файл для продовження запису або створити файл і відкрити для запису.

Для обробки файлів в текстовому режимі до вказаних символів додається символ "t": "rt", "wt", "at" (такий режим передбачений за умовчанням). Для завдання режиму обміну на байтовому рівні додається символ "b": "rb", "wb", "ab". Для роботи в режимі Update (прямого доступу) додається символ "+" (файл відкривається для читання й запису водночас):

"r+" - відкрити існуючий файл;

"w+" - створити новий або відкрити існуючий;

"a+" - створити новий або відкрити існуючий з можливістю поповнення інформації.

Якщо ім'я файлу filename вказати як значення "CON" (консоль), то введення буде відбуватися із клавіатури, а виведення на екран.

Якщо файл відкрити не вдалося, функція fopen повертає значення NULL. При досягненні кінця файлу функція fscanf повертає спеціальний символ EOF. Для перевірки досягнення кінця файлу можна застосовувати функцію feof(FILE*), вона повертає значення true (або відповідне ціле число), якщо файл вже прочитано до кінця.

У програмуванні операцій з файлами корисною є процедура rewind(FILE*), вона встановлює покажчик поточної позиції файлу в нуль (тобто у початок файлу).

Читання й запис без форматних перетворень

Для читання й запису без форматних перетворень передбачені наступні функції:

fread(адреса_об’єкта, розмір_об’єкта, кількість_об'єктів, f);

fwrite(адреса_об’єкта,розмір_об’єкта, кількість_об'єктів, f);

Перший параметр вказує адресу, куди треба розмістити або звідки взяти послідовність байтів. Другий параметр вказує на кількість байтів, що передаються, третій - кількість об'єктів. Останнім параметром є покажчик на файл типу FILE*.

Для бінарного введення/виведення, в тих випадках, коли передається одне значення, можна створити і далі використовувати біль зручну функцію: