Теоретичні відомості до п’ятої лабораторної роботи

 

Мова програмування Сі підтримує багато функцій стандартних бібліотек для файлового введення і виведення. Ці функції складають основу заголовного файлу стандартної бібліотеки мови Сі <stdio.h>.

Файл відкривається за допомогою fopen, яка повертає інформацію потоку введення-виведення, прикріпленого до вказаного файлу або іншого пристрою, з якого йде читання (або у який триває запис). У разі невдачі функція повертає нульовий покажчик.

Класичний підхід, прийнятий в Сі, полягає в тому, що інформація про потік заноситься в структуру FILE, яка визначена у файлі stdio.h. Файл відкривається за допомогою функції fopen, яка повертає покажчик на структуру типу FILE.

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

FILE *fopen(const char *path, const char *mode);

Функція відкриває файл із заданим ім'ям і зв'язує з ним потік. Аргумент mode вказує режим відкриття файла.

 

Табл. 2. Значення аргументу mode функції fopen()

"r" відкриття файлу без дозволу на модифікацію, файл відкривається лише для читання.
"w" створення нового файлу тільки для запису, якщо файл із вказаним ім'ям вже існує, то він перезапишеться.
"a" відкриття файлу тільки для додавання інформації в кінець файлу, якщо файл не існує, він створюється.
"r+" відкриття існуючого файлу для читання та запису.
"w+" створення нового файлу для читання та запису, якщо файл із вказаним ім'ям вже існує, то він перезаписується.
"a+" відкриває файл у режимі читання та запису для додавання нової інформації у кінець файлу; якщо файл не існує, він створюється.

 

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

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

int putc(int ch, FILE *f);

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

char *fgets(char *s,int n,FILE *stream);

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

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

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

int fscanf(FILE *stream, const char *format[, address, …]);

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

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

Для запису даних у текстовий файл найчастіше використовуються функції fgetc(), fputs() та fprintf().

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

int fgetc(FILE *f);

Синтаксис функції fprintf():

int fprintf(FILE *stream, const char *format[,argument,…]);

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

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

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: