Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. Word. Робота з великими документами
  2. Вешалка для игл лабораторная
  3. Глава 36. Лабораторная крыса
  4. Глава IV Робота Суду
  5. Дипломних проектах (роботах)
  6. Індивідуальна робота вчителя-вихователя у навчально-виховному процесі. Робота з важковиховуваними учнями.
  7. Індивідуально – консультативна робота студентів

Тема: Складання програм з використанням форматованого файловоговводу-виводу

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

 

1 Короткі теоретичні відомості

Типи дискових файлів. В С є два типи потоків: текстові і двійкові. Потік будь-якого з цих типів необхідно асоціювати з файлом. Текстові потоки асоціюються з текстовими файлами. Текстовий файл складається з текстових рядків. Кожний рядок закінчується символом кінця рядка.

Двійкові потоки асоціюються з двійковими файлами. Всі дані зчитуються і записуються в незмінному вигляді без розподілення на рядки і символів кінця рядка. Нульовий символ (\0) і символ кінця рядка (\n). не мають ніякого змістовного значення і зберігаються як будь-який інший файл даних.

Імена файлів на диску. Кожний файл на диску має ім’я. Ім’я файлу використовується для доступу до нього і до його даних. В програмах імена файлів представлені у вигляді символьних рядків, як текстові дані.

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

Ім’я файлу може також містити шлях до цього файлу. Шлях вказує диск і каталог, де міститься файл. Якщо ім’я файлу вказано без шляху, то файл повинен бути розміщений в тому каталозі, який операційна система в даний момент рахує робочим. Приклад повного імені файлу

C:\data\list.txt.

Це ім’я відноситься до файлу list.txt, який знаходиться в папці data на диску C:. Оскільки в мові С обернена похила коса риска має службове навантаження, то в імені файлу замість одної косої риски використовується дві. Це означає, що вищенаведене ім’я файлу на мові С матиме вигляд:

C:\\data\\list.txt.

Процес відкриття файлів. Для роботи з файлами їх необхідно відкрити. При цьому файловий потік потік зв’язується зі вказівником на структуру складного типу FILE, який визначений в бібліотечному файлі <stdio.h>. При відкритті файлу, повертається вказівник на потік, тобто на об’єкт типу FILE.

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

Для відкриття файлу використовується бібліотечна функція fopen(), прототип якої знаходиться в бібліотечному файлі stdio.h і має вигляд:

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

Функція повертає вказівник типу FILE * — вказівник на структуру, описану в файлі stdio.h. Елементи структури FILE використовуються програмою для різних операцій з файлами. При відкритті файлу треба описати вказівник на структуру FILE. Синтаксис опису:

FILE *fp; /*Опис вказівника на структуру типу FILE*/

Функції fopen() повертає вказівник (fp) на структуру FILE, який використовується в операціях з файлами. Якщо функція не могла відкрити файл, вона повертає нульовий вказівник NULL. Це може відбутися через збій в пристроях вводу-виводу.

Аргумент filename — це символьний рядок, який містить шлях до файлу, що відкривається. Цей рядок може бути літералом, тобто послідовністю символів в подвійних лапках, або вказівником на рядкову змінну.

Аргумент mode вказує режим відкриття файлу, тобто, чи є файл двійковий або текстовий, відкривається файл для читання даних чи запису інформації на нього, або для обох цих операцій одночасно. Нижче наведено режими відкриття файлів в текстовому режимі функцією fopen() і їх пояснення.

Режим Пояснення
r Відкриття файлу для читання, якщо файл не існує, функція повертає значення NULL
w Відкриття файлу для запису, якщо файл не існує, він створюється. Якщо файл існує, він знищується без попередження,
a Відкриття файлу для додавання даних в кінець, якщо файл не існує, він створюється. Якщо файл існує, нові дані дописуються в кінець.
r+ Відкриття файлу для читання і запису, якщо файл не існує, він створюється. Якщо файл існує, нові дані записуються спочатку, знищуючи наявну інформацію.
w+ Відкриття файлу для читання і запису, якщо файл не існує, він створюється. Якщо файл існує, він очищається і нові дані записуються в чистий файл.
a+ Відкриття файлу для читання і добавлення даних, якщо файл не існує, він створюється. Якщо файл існує, нові дані записуються в кінець.

Щоб відкрити файл в двійковому режимі до аргументу mode треба додати букву b. Якщо аргумент mode рівний “a”, то файл відкривається для додавання даних в текстовому режимі, а якщо “ab”, то файл відкривається в двійковому режимі.

Форматований ввід. Форматований ввід виконується бібліотечною функцією fscanf(). Аналогічно до виводу. scanf(). з тією різницею, щоввід проводиться з заданого файлового потоку, а не з стандартного stdin. Прототип цієї функції знаходиться в бібліотеці stdio.h. і має вид

int fscanf(FILE *fp, char *fmt,...);

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

Другий аргумент - це рядок формату char *fmt. (Рядок формату - це такий самий рядок, що і в функції scanf(). (це то, що береться в подвійні лапки)).

Третій аргумент це багато крапок, що в прототипі означає змінний список аргументів, в які треба помістити введені дані.

Приклад читання форматованих даних з файлу"C:\\lk\\list.txt":

/* Читанняформатованих даних з допомогою функції fscanf(). */

#include <stdlib.h>

#include <stdio.h>

main(){

int f1, f2, f3, f4, f5;

FILE *fp;

fp = fopen("C:\\lk\\list.txt", "r"); /*Відкриття файлу в режимі читання*/

/*Читання з файлу, перший */

fscanf(fp, "%d\n%d\n%d\n%d\n%d\n", &f1, &f2, &f3, &f4, &f5);

printf("The values are %d, %d, %d, %d, %d \n.",f1, f2, f3, f4, f5);

fclose(fp); /* Закриття файлу fp*/}

2 Варіанти індивідуальних завдань

№ вар. Умова завдання
1. Задати масив цілих чисел розмірністю 10, записати його в файл на диску, прочитати його з файлу в інший масив, новий масив вивести на екран..
2. Задати 9 змінних цілого типу, записати їх в файл на диску, прочитати їх з файлу в масив розмірністю 9, масив вивести на екран.
3. Задати масив цілих чисел розмірністю 12, записати його в файл на диску, прочитати його з файлу в інший масив, новий масив вивести на екран.
4. Числа від 1 до 14 записати в файл на диску, прочитати їх з файлу в змінні і вивести їх на екран.
5. Задати 6 змінних цілого типу, записати їх в файл на диску, прочитати їх з файлу в змінні і вивести на екран.
6. Задати масив цілих чисел розмірністю 9, записати його в файл на диску, прочитати його з файлу в 9 змінних цілого типу і вивести їх на екран.
7. Задати 6 змінних цілого типу, записати їх в файл на диску, прочитати їх з файлу в масив розмірністю 6, масив вивести на екран.
8. Задати 6 змінних цілого типу, записати їх в файл на диску, прочитати їх з файлу в масив розмірністю 6, масив вивести на екран.
9. Задати масив цілих чисел розмірністю 9, записати його в файл на диску, прочитати його з файлу в 9 змінних цілого типу і вивести їх на екран.
10. Задати 6 змінних цілого типу, записати їх в файл на диску, прочитати їх з файлу в змінні і вивести на екран.
11. Числа від 1 до 9 записати в файл на диску, прочитати їх з файлу в змінні і вивести їх на екран.
12. Задати масив цілих чисел розмірністю 12, записати його в файл на диску, прочитати його з файлу в інший масив, новий масив вивести на екран.
13. Задати масив цілих чисел розмірністю 10, записати його в файл на диску, прочитати його з файлу в інший масив, новий масив вивести на екран..
14. Задати 9 змінних цілого типу, записати їх в файл на диску, прочитати їх з файлу в масив розмірністю 9, масив вивести на екран.

 

3 Методичні вказівки

1. Створити файл з розширенням.TXT на дску C в папці GxxB (де хх -номер групи), яка міститься в свою чергу в папці lk.

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

3. Записати запропоновані дані у файл за допомогою функції fprintf(). Закрити файл за допомогою функції fclose().

4. Відкрити файл для читання і записані дані прочитати з файлу в змінні, згідно індивідуального завдання, результати вивести на екран.

5. Закінчивши роботу з файлом, закрити його за допомогою функції fclose();

4 Приклад виконання лабораторної роботи

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

Програма розв'язку

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

FILE *fp;

int a[12]={4,7,8,6,8,5,4,3,2,1,6,5},b[12],i;

int k;

void main() {clrscr();

fp=fopen ("C:\\WORK\\A.TXT","w");

if (fp==NULL) {printf ("not open"); exit(1);}

for(i=0;i<12;i++) fprintf (fp,"%d ",a[i]);

fclose(fp);

fp=fopen ("C:\\WORK\\A.TXT","r");

if(fp==NULL) {printf ("not open");

exit(2); }

for (i=0;i<12;i++)

fscanf(fp,"%d",&b[i]);

for (i=0;i<12;i++) printf ("b[%d]=%d\n",i,b[i]);

fclose(fp); }

5 Контрольні запитання

1. Які функції форматного вводу-виводу?

2. За допомогою якої функції відкриваються файли?

3. За допомогою якої функції закриваються файли?

4. Яку інформацію треба передати в функцію fopen()для відкриття файлу?

5. Як здійснюється ввід-вивід на мові С?

6. Які є типи потоків?

7. Як записуються на мові С імена дискових файлів?

8. Які режими відкриття файлів для запису?


Дата добавления: 2015-07-17; просмотров: 128 | Нарушение авторских прав


Читайте в этой же книге: Лабораторна робота № 9 | Лабораторна робота № 10 | Лабораторна робота № 11-12 | Лабораторна робота № 13-14 | Лабораторна робота № 15 | Int putchar(int c); | Лабораторна робота № 16 | Лабораторна робота № 17-18 | Struct data data1; | Лабораторна робота № 19 |
<== предыдущая страница | следующая страница ==>
Результат| Лабораторна робота № 22

mybiblioteka.su - 2015-2024 год. (0.013 сек.)