Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_6_fajly.doc
Скачиваний:
0
Добавлен:
24.12.2019
Размер:
76.29 Кб
Скачать

Лабораторна робота № 6

Лабораторна робота № 6. Організація роботи з файлами

Мета роботи. Навчитися працювати з файлами. У запропонованих задачах потрібно створити необхідні файли заздалегідь засобами системи, якщо в програмі відбувається звернення до них.

Хід роботи :

  1. 1.Скласти алгоритм програми за індивідуальним варіантом, номер якого визначає викладач.

  2. Скласти програму вiдповiдно до розробленого алгоритму. В програмі обов‘язково використати розумне число коментарів.

  3. Скласти програму мовою Сі та отримати вірний результат. Протестувати результат на декількох прикладах.

  4. Написати звіт, в якому навести умову задачі, текст програми з коментарями, блок-схему алгоритму та Print Screen результату. Захистити звіт.

ВМIСТ ЗВIТУ

  1. Умова задачі з вказанням номеру варіанта.

  2. Навести текст розробленої програми з коментарями.

  3. Навести результати тестування на комп‘ютері.

  4. Відповісти на контрольні запитання.

При написанні програм імена вхідного і вихідного файлів рекомендується задавати як аргументи командного рядка. Необхідно видавати діагностику при помилкових ситуаціях у роботі з файлами.

Теоретичні відомості.

Мова С крім стандартного введення даних із клавіатури і виведення результатів на екран надає також можливість обміну при операціях уведення / виведення з зовнішніми пристроями, у тому числі, з файлами на диску.

У С не передбачені ніякі визначені структури файлів (такі як файли послідовного чи прямого доступу): усі файли розглядаються як послідовності, потоки байтів. Для файлу визначений маркер (покажчик читання/запису). Він визначає поточну позицію, до якої здійснюється доступ.

З початком роботи будь-якої програми автоматично відкриваються деякі стандартні потоки, наприклад, стандартне введення (його ім'я – stdin ) і стандартне виведення (його ім'я - stdout). За замовчуванням вони зв'язані з клавіатурою й екраном термінала відповідно. Тому в тих функціях уведення / виведення, що використовувалися дотепер, не вказувалося з якого потоку беруться і куди розміщуються дані: це відомо за замовчуванням.

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

Доступ до потоку здійснюється за допомогою покажчика. Покажчик на файл описується в такий спосіб:

FILE *fp;

Тип FILE – це структура, визначена в <stdio.h> за допомогою засобу typedef, яка містить деяку інформацію про файл: наприклад, прапорці стану файлу, розмір буфера, покажчик на буфер і ін. Описаний покажчик можна зв'язати з конкретним файлом у момент відкриття даного файлу. Це здійснюється за допомогою функції

fopen ("шлях до файлу", "тип доступу"),

яка повертає покажчик на файл чи NULL у випадку помилки.

Наприклад, у результаті виконання оператора

fp = fopen ( “ ex1.txt “, “w” ) ;

файл ex1.txt відкритий для запису, а в програмі на цей файл можна посилатися за допомогою покажчика fp (тобто функція fopen( ) бере зовнішнє подання файлу – його фізичне ім'я – і ставить йому у відповідність внутрішнє логічне ім'я, що далі і буде використовуватися в програмі). Як тип доступу можуть бути зазначені такі параметри

w – існуючий файл відкривається для запису, при цьому його старий уміст затирається. Маркер файлу вказує на його початок. Якщо файл ще не існував, то він створюється (якщо це можливо);

r – існуючий файл відкривається для читання (з початку). Якщо файл не існує – це помилка;

a – файл відкривається для дозапису в його кінець. Про інші типи доступу можна прочитати в книгах по мові С.

По закінченні роботи з файлом він повинний бути закритий. Для цього використовується функція

fclose (покажчик_файлу).

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

fprintf(), fscanf(), fputs(), fgets(), getc(), putc(), fgetc(), fputc().

Функції getc()/fgetc(), putc()/fputc() за своїми діями ідентичні, відмінність складається тільки в тому, що getc( ) і putc( ) реалізовано як макровизначення, a fgеtc() і fputc( ) – як дійсні функції.

Прототипи усіх файлових функцій, а також необхідні константи знаходяться у файлі <stdio.h> .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]