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

Лабораторна робота № 24. Тема:Блочний файловий ввід-вивід структурованих даних

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

Тема: Блочний файловий ввід-вивід структурованих даних

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

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

Блочний вивід. Функція fwrite(). Блочний ввід-вивід використовується при збереженні даних, які буде зчитувати та чи інша програма на С. Цей спосіб використовується тільки для двійкових файлів. В процесі блочного вводу-виводу дані копіюються повністю з пам’яті на диск і навпаки з диску в пам’ять. Наприклад, при одному виклику функції блочного вводу-виводу можна записати цілий масив і навпаки, одним викликом функції зчитати цей масив з диску в пам’ять. Блочний ввід-вивід виконується функціями fread() i fwrite().

Функція fwrite(). Ця бібліотечна функція записує блок данихз пам’яті в двійковий файл. Прототип функції, який знаходиться в файлі stdio.h

int f write(void *buf, int size, int count, FILE *fp);

Аргумент buf -це вказівник на ділянку пам’яті, в якій є дані для запису в файл. Опис void означає, що аргумент є вказівником на любий тип даних.

Аргумент size -вказує розмір в байтах окремих елементів даних в блоці.

Аргумент count - вказує загальну кількість елементів даних. Наприклад, якщо треба записати масив з 100 цілочисельних елементів, то size=2, а count =100, бо цілочисельна змінна має 2 байти, кількість елементів рівна 100. Для обчислення аргументу size можна використати операцію sizeof().

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

if ((f write(buf, size, count, fp)!= count)

printf("Помилка");

Приклад: Записати одну змінну x типу double

f write(&x, sizeof(double), 1, fp);

Приклад: Записати масив data[50] типу float

float data[50];

f write(data, sizeof(float), 50, fp);/* Записує масив 50 елементів довжиною 4 байти */

або f write(data, sizeof(data), 1, fp); /* Записує масив як 1 елемент */

Блочний вивід. Функція fread(). Функція fread(). Ця бібліотечна функція зчитує блок данихз двійкового файлу в пам¢ять.

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

int fread(void *buf, int size, int count, FILE *fp);

Аргумент buf -це вказівник на ділянку пам’яті, в яку поміщаються дані з файлу. Опис void означає, що аргумент є вказівником на будь-який тип.

Аргумент size -вказує розмір в байтах окремих елементів даних в блоці.

Аргумент count - вказує загальну кількість елементів даних. Наприклад, якщо треба зчитати масив з 100 цілочисельних елементів, то size=2, а count =100, бо цілочисельна змінна має 2 байти, квлькість елементів рівна 100. Для обчислення аргументу size можна використати операцію sizeof().

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

if ((f read(buf, size, count, fp)!= count) printf("Помилка");

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

1. Задати 2 масиви розмірністю 3, елементами якого є дійсні і цілі числа. Шляхом введення їх з клавіатури. Використовуючи функції блочного вводу-виводу сформувати двійковий файл із елементів обох масивів і прочитати 4 значення з сформованого файлу в змінні, які вивести на екран. Передбачити повідомлення про помилки при відкритті і закритті файлу, а також при блочному вводі-виводі.

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

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

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

5. Задати масив розмірністю 10, елементами якого є дійсні числа. Шляхом введення їх з клавіатури. Використовуючи функції блочного вводу-виводу сформувати двійковий файл із елементів обох масивів і прочитати 4 значення з сформованого файлу в новий масив, які вивести на екран. Передбачити повідомлення про помилки при відкритті і закритті файлу, а також при блочному вводі-виводі.

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

7. Задати 3 масиви розмірністю 5, елементами якого є символьні. Дійсні і цілі числа. Шляхом введення їх з клавіатури. Використовуючи функції блочного вводу-виводу сформувати двійковий файл із елементів обох масивів і прочитати 4 значення з сформованого файлу в новий масив, який вивести на екран. Передбачити повідомлення про помилки при відкритті файлу, а також при блочному вводі-виводі.

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

9. Задати масив розмірністю 10, елементами якого є дійсні числа. Шляхом введення їх з клавіатури. Використовуючи функції блочного вводу-виводу сформувати двійковий файл із елементів обох масивів і прочитати 4 значення з сформованого файлу в новий масив, які вивести на екран. Передбачити повідомлення про помилки при відкритті і закритті файлу, а також при блочному вводі-виводі.

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

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

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

13. Задати 3 масиви розмірністю 2, елементами якого є дійсні, символьні, дійсні і цілі числа. Шляхом введення їх з клавіатури. Використовуючи функції блочного вводу-виводу сформувати двійковий файл із елементів обох масивів і прочитати 5 значень з сформованого файлу в змінні, які вивести на екран. Передбачити повідомлення про помилки при відкритті і закритті файлу, а також при блочному вводі-виводі

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

 

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

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

2. Уважно прочитати умову задачі індивідуального завдання, записати запропоновані дані у файл за допомогою функції f write (). Закрити файл за допомогою функції fclose().

3. Відкрити цей файл для читання і записані дані прочитати з файлу за допомогою функції f read (). в інші змінні, результати початкових і кінцевих змінних вивести на екран.

4. Відкомпілювати програму і зафіксувати результати реалізації.

5. Закінчивши роботу з файлом, закрити його.

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

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

Текст програми:

#include <stdio.h>

#include <stdlib.h>

void main ()

{

int i, array1[9]={1,4,5,6}, a1,a2,a3,a4;

float array2[9]={6.7,8.9,4.5,3},a5;

FILE *fp;

/* Відкриття файлу для запису в двійковому режимі */

fp=fopen("C:\\lk\\list.txt", "wb");

/* Збереження (запис) масивів у файл*/

if ((fwrite(array1, sizeof(int), 4, fp)!= 4)

{printf("Помилка запису"); exit(1);}

if ((fwrite(array2, sizeof(float), 4, fp)!= 4)

{printf("Помилка запису "); exit(2);}

fclose(fp);

/* Відкриття того ж файлу для читання в двійковому режимі */

fp=fopen("("C:\\lk\\list.txt", "rb"");

/* Зчитування даних в змінні a1,a2,a3,a4,a5*/

if ((fwrite(&a1, sizeof(int), 1, fp)!= 1)

{printf("Помилка запису"); exit(3);}

if ((fwrite(&a2, sizeof(int), 1, fp)!= 1)

{printf("Помилка запису"); exit(4);}

if ((fwrite(&a3, sizeof(int), 1, fp)!= 1)

{printf("Помилка запису"); exit(5);}

if ((fwrite(&a4, sizeof(int), 1, fp)!= 1)

{printf("Помилка запису"); exit(6);}

if ((fwrite(&a5, sizeof(float), 1, fp)!= 1)

{printf("Помилка запису"); exit(7);}

fclose(fp);

/* Вивід прочитаних змінних на екран*/

printf("a1= %d\t a2= %d\t a3= %d\t a4= %d\t a5= %f\n ", a1,a2,a3,a4,a5); }

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

1. Яка функція блочного вводу?

2. Яка функція блочного виводу?

3. Який прототип функції fwrite().?

4. Який прототип функції fread()?


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


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

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