Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/studb20/public_html/index.php on line 4
 1.15.1 Текстові файли - Програмування С, С++теорія та практика (частина 1) - Studbook

Програмування С, С++теорія та практика (частина 1)

1.15.1 Текстові файли

Розглянемо спочатку роботу з текстовими файлами. Відкриття текстового файлу Іезґ. 1x1 може мати вигляд :

#іпс1ийе<з'Ьйіо. Ь>

Vоій таіп()

{

ЕІЬЕ *£;

і£ ((£=£ореп("'Ьез'Ь.'Ьх'Ь", "г^"))==ниьь)

{

ргіп'Ь£("Файл не вдалося відкрити.\п"); ге'Ьигп;

}

£с1озе(£);

}

В даному прикладі змінна /зв‘язується з файлом „ієіі.Ш”, який відкривається як текстовий тільки для читання.

З відкритого таким чином файлу можна читати інформацію. Після закінчення роботи з файлом, його необхідно закрити за допомогою функції /сІОІ'е().

Якщо файл відкривався би за допомогою/ореп{“Іеі1.Ш”, “гі+”); , то можна було б не тільки читати, але й записувати в нього інформацію.

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

Записування символу в файловий потік здійснюється функцією риґс().

іпі ри{с(іп{ сИ, РИБ *1);

Читання рядка здійснюється за допомогою функції /§еґз().

еИаг *1де{5(сІіаг *5,іп{ п,ПІ_Е *5{геат);

У виклику функції /деґі'() : 5 - покажчик на буфер, в який читається рядок, п - кількість символів. Читання символу в рядок проходить або до появи символу кінця рядка „ \п ”, або читається п-1 символ. В кінці прочитаного рядка записується нульовий символ.

#іпс1ийе<з'Ьйіо. Ь>

#іпс1ийе<з'Ьгіпд.Ь>

Vоій. таіп () {

сЬаг з [80] ;

ЕІЬЕ *£;

і£ ((£=£ореп("1.срр", "г£") )==ниьь) { ргіп'Ь£("ТЬеге аге ап еггог\п"); ге'Ьигп;

}

Йо {

£де£з(з,80,£); ргіп^£("%з",з);

} мЬі1е (!£ео£(£));

£с1озе(£);

}

Функція /ев/() перевіряє, чи не прочитаний символ завершення файла. Якщо такий символ прочитаний, то /ев/() повертає ненульове значення і цикл завершується.

Читання з текстового файлу форматованих даних може здійснюватися функцією рсап/. Синтаксис :

іп{ І^сап^РІІ-Е *5Їгеат, соп5Ї сИаг *Ю>гта{[, асІсІге55, ...]);

Параметр /вгтаґ визначає рядок форматування аргументів, які задаються своїми адресами.

При форматованому читанні можуть виникати помилки у зв’язку з досягненням завершення файлу або невірним форматом записаних у файлі даних. Перевірити, чи успішно пройшло читання даних можна за значенням, яке повертає функція /&сап/(). При успішному читанні вона повертає кількість прочитаних полів. Тому читання даних можна організовувати наступним чином : і£ (£зсап£(£,"%гі%гі%гі",&а,&Ь,&с)!=3)

{

ргіп^£("Помилка читання!\п");

};

Існує також і ряд функцій для запису даних у текстовий файл. Найчастіше використовуються функції/§еґс(),/риґ&() та /ргіпґ/().

Функція /деіс() використовується для читання чергового символу з потоку, відкритого функцією /ореп().

іпі 1деіс(РІІ_Е *1);

Синтаксис функції/ргіпґ/() :

іпі ІргіпЩРІІ-Е *5ігеат, соп5І сИаг *1огтаі[,агдитепі,...]};

Вона працює майже мак само, як і функція ргіпґ/(), але їй потрібний додатковий аргумент для посилання на файл. Він є першим у списку аргументів. Наводимо приклад, який ілюструє звертання до наведених вище функцій:

#іпс1ийе<зЬйіо.Ь>

Vоій таіп()

{

ЕІЬЕ *£і; іпЬ аде;

£і=£ореп("аде. ЬхЬ", "г") ; /* відкриття файла для читання */ £зсап£ (£і, "%й", &аде) ; /*читання з файлу числового значення

*/

£с1озе(£і) ;           /* закриття файла */

£і=£ореп ("йа^а. -Ьх-Ь", "а") ; /* відкриття файла для додавання інформації в кінець */

£ргіпЬ£ (£і, "Аде==%й. \п", аде) ; /* запис рядка в файл */ £с1озе(£і) ;   /* закриття файла */

}

 

70