- •Міністерство освіти та науки україни житомирський державний технологiчний університет
- •Загальні вказівки
- •Вимоги щодо оформлення робіт
- •Теоретичні відомості до першої лабораторної роботи.
- •Елементи мови Сі
- •1.1 Алфавіт
- •1.2. Ідентифікатори
- •1.3. Константи
- •1.4. Коментарі
- •Оператори
- •2.1. Оператор розгалуження if
- •2.2. Оператор switch
- •2.3. Оператор циклу з передумовою while
- •2.4. Оператор циклу з постумовою do … while
- •2.5. Оператор циклу for
- •2.6. Оператор розриву break
- •2.7. Оператор продовження continue
- •2.8. Оператор переходу goto
- •2.9. "Порожній" оператор
- •2.10. "Складений" оператор
- •Лабораторна робота №1 "Прості типи даних. Базові конструкції мови с"
- •Теоретичні відомості до другої лабораторної роботи
- •Лабораторна робота №2 "Цикли та розгалуження. Функції та їх застосування".
- •Теоретичні відомості до третьої лабораторної роботи
- •1.1. Оголошення та звертання в одновимірних масивах
- •1.2. Оголошення та звертання до багатовимірних масивів
- •Символьні рядки
- •2.1. Основні методи ініціалізації символьних рядків.
- •2.2. Функції роботи з рядками
- •Лабораторна робота №3
- •Теоретичні відомості до четвертої лабораторної роботи
- •Структури
- •1.1. Оголошення структури
- •1.2. Масиви структур
- •1.3. Динамічна пам’ять
- •Лабораторна робота №4
- •Теоретичні відомості до п’ятої лабораторної роботи
- •Лабораторна робота №5 "Робота з файлами. Обробка текстової інформації."
Теоретичні відомості до п’ятої лабораторної роботи
Мова програмування Сі підтримує багато функцій стандартних бібліотек для файлового введення і виведення. Ці функції складають основу заголовного файлу стандартної бібліотеки мови Сі <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().