МIНIСТЕРСТВО ОСВIТИ І НАУКИ УКРАЇНИ
Лабораторна робота
Тема: “Файли”
Мета роботи: вивчення засобiв мови Сi для обробки файлів, оволодiння прийомами складання алгоритмiв i програм з використанням файлів.
Завдання: сформувати файл, що містить інформацію про книги за таким зразком: прізвище автора, назва, рік видання. Використовуючи сформований файл, знайти назви книг даного автора, рік видання. Прізвище автора ввести з клавіатури.
Теоретичні відомості: Файлом називається будь-яка iнформацiя, записана в зовнiшню (магнiтну) пам'ять. Обмiн даними мiж оперативною та магнiтною пам'яттю вiдбувається через спецiально вiдведену для цього частину оперативноє пам'ятi, яка називається буферною.
При використаннi файлiв обов'язковими атрибутами програми є: оголошення, функцiї вiдкриття та закриття файлу, а також функцiї вводу-виводу. Оголошення файлiв виконується так:
FILE *f1,*f2,...,*fn;
Тут *f1,...,*fn -вказувачi на файли, одночасно можна оголосити n файлiв. Кожному файлу вiдповiдає свiй вказувач, ця вiдповiднiсть встановлюється в момент вiдкриття файлiв.
Для роботи з файлами були використані такі функції.
f1=FOPEN("iф","тип"); - вiдкриття файлу з iменем iф, призначення йому вказувача f1. Iм'я файлу складається з назви та розширення, роздiлених крапкою. Назва може мати до 8-ми лiтер. Розширення має довжину до трьох букв i в файлах, утворених користувачем, необов'язкове. Для задання типу служать символи: r - зчитування з файлу, w - запис у файл, a - доточування файлу. Функцiя повертає значення NULL, якщо при вiдкриттi сталася помилка.
FCLOSE(f1,...,fn); - закриття файлiв. В момент закриття вiдбувається запис у файл залишку буферної пам'ятi, якщо вiн був вiдкритий для запису.
FSCANF(f1,"сф",саз); - форматоване введення, читання з файлу,
який має вказувач f1, даних, перетворення їх типiв вiдповiдно до
списку форматiв сф i занесення в оперативну пам'ять, задану списком адрес змiнних саз.
FPRINTF(f1,"сф",сiз); - форматоване виведення, занесення в файл змiнних, заданих списком сiз.
Всi функцiє читання файлу повертають значення EOF або NULL, якщо був досягнений кiнець файлу.
Графічний алгоритм.
Програма складена мовою Сі:
#include<stdio.h>
#include<math.h>
void main()
{ char a[256],n[256],w[256];
int r,k,i=1;
FILE *f1,*f2;
clrscr();
f1=fopen("int.txt","w");
f2=fopen("out.txt","w");
printf("введіть кількість книг:");
scanf("%i",&k);
printf("введіть автора, назву і рік видання книги\n");
for(;i<=k;i++)printf("%i:",i),scanf("%s%s%i",&a,&n,&r),fprintf(f1,"\n%s %s %i",a,n,r);
fclose(f1);
printf("\nвведіть автора\n");
scanf("%s",&w);
f1=fopen("int.txt","r");
printf("знайдено:\n");
while(!feof(f1))
{
k=1;
fscanf(f1,"%s%s%i",&a,&n,&r);
for(i=0;w[i]!=NULL;i++) if(w[i]!=a[i]) k=0;
if(k) fprintf(f2,"%s %s %i\n",a,n,r),printf("%s %s %i\n",a,n,r);
};
fclose(f1);
fclose(f2);
getch();
}
Результат виконання програми
введіть кількість книг:5
введіть автора, назву і рік видання книги
1:Пилипко_О.Р. Програмування 2009
2:Шевченко_Т.Г. Кобзар 1964
3:Хрущ_М.В. Історія_України 2008
4:Пилипко_О.Р. Інформатика 2000
5:Дутка_І.І. Політ_в_Нірвану 2007
введіть автора
Пилипко_О.Р.
знайдено:
Пилипко_О.Р. Програмування 2009
Пилипко_О.Р. Інформатика 2000
Висновки: виконавши лабораторну роботу, я вивчив засоби мови Сi та прийомами складання алгоритмiв i програм, для обробки файлів.