У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Лабораторна робота - Робота з файлам
3



МIНIСТЕРСТВО ОСВIТИ І НАУКИ УКРАЇНИ

Лабораторна робота

“Робота з файлами”

 

Мета: оволодiння прийомами складання алгоритмiв i програм з використанням файлів,

Завдання: 13.7. Сформувати файл прямого доступу “ZAPAS”. Компоненти файлу є відомості про запчастини, їх назва, кількість, вартість, термін зберігання (місяці). Сформувати файл, де помістити відомості про ті запчастини, термін зберігання яких більше року, а також вивести на друк кількість запчастин, вартість яких понад 1000 гр., і їх загальну вартість.

Теоретичні відомості: Мова Сі не має спеціальних операторів для роботи з файлами, цю роботу виконують функції. Всі вони описані в уже відомому нам заголовковому файлі stdio.h. Різні компілятори можуть мати різну кількість функцій вводу-виводу. Загалом їх є декілька десятків, але ми розглянемо лише найголовніші.

При використаннi файлу його обов’язково необхідно оголосити, це робиться так:

FILE *f1,*f2, ... ,*fn;

Тут *f1,...,*fn – вказівники на файли, одночасно можна оголосити n вказівників. Кожному файлу вiдповiдає свiй вказівник, ця вiдповiднiсть встановлюється в момент вiдкриття файлiв. Він являє собою адресу пам’яті, де знаходяться відомості про буфер: адреса буфера, ступінь його заповнення та ім’я фізичного файлу, для якого він призначений.

Нижче переліченi основнi функцiї для роботи з файлами.

f1=fopen("iф", "тип") – вiдкриття файлу з iменем iф, призначення йому вказівника f1. Для задання типу служать символи: r – зчитування з файлу, w – запис у файл, a – доточування файлу новими записами та інші. Функцiя fopen() повертає значення вказівника на файл (наприклад f1) або NULL, якщо при вiдкриттi сталася помилка, наприклад, відсутній магнітний диск. Ця функція встановлює зв’язок між фізичним і логічним файлом. Якщо відкривається новий файл для запису (з символом w), то він перед записом створюється. Якщо файл уже існує, то він заново перестворюється, а стара інформація пропадає.

fclose(f1, ... , fn) – закриття файлiв. Закривати файли не обов’язково, закінчуючи виконання, програма закриває їх сама, але це не вважається хорошим тоном програмування. По-перше, існує небезпека недописати файл, бо в момент закриття вiдбувається запис у файл залишку буферної пам’ятi, якщо вiн був вiдкритий для запису. По-друге, навіть у випадку відкриття файлу лише для читання, програміст повинен дбати про закриття всього, що він повідкривав, та бути впевненим у тому, що програма завершиться коректно. По-третє, функція закриття файлу підвищує “читабельність” програми.

fprintf(f1, "сф", сiз) – форматоване виведення; занесення в файл, на який вказує f1, змiнних, заданих списком імен змінних сiз.

Двійкові файли утворює функція fwrite(), а читає -– fread().

Графічний алгоритм:

ні так

ні

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

#include <stdio.h>

main()

{

int termin,cina,kilkist,s=0,k=1;

char nazva[256];

FILE *f1,*f2;

f1=fopen("int.txt","w")

for(k=1;k<5;k++)

{

printf("vvedit termin\n");

scanf("%i",&termin);

fwrite(f1,"%i",termin);

printf("vvedit ciny]n");

scanf("%i",cina);

fwrite(f1,"%i",cina);

printf("vvedit kilkist\n");

scanf("%i",kilkist);

fwrite(f1,"%i",kilkist);

printf("vvedit nazvy\n");

scanf("%s",nazva);

fwrite(f1,"%s",nazva);

}

fclose(f1);

f1=fopen("int.txt","r");

f2=fopen("out.txt","w");

while (!feof(f1))

{

fread(f1,"%i %i %i %s",&termin,&cina,&kilkist,&nazva);

if(cina>1000)

if(termin>12)

{

s+=cina;

fwrite(f2,"%i %i %i %s\n",termin,cina,kilkist,nazva);

}

}

fwrite(f2,"zahalna cina %i",s);

fclose(f1);

fclose(f2);

}

Результати виконання:

Вхідні дані: 13 2000 32 motor

32 5500 1 tranzustor

4 200 3 xolodulnuk

6 1760 4 pulosos

54 3000 30 praska

16 1390 9 mashuna

Вихідний файл: 13 2000 32 motor

32 5500 1 tranzustor

54 3000 30 praska

16 1390 9 mashuna

zahalna cina 11890

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