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



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

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

Функція fclose() повертає значення NULL, якщо закриття файлу було успішним, або EOF – у протилежному випадку.

fseek(f1, n, k) – прямий доступ до файлу, встановлення вказівника файлу, на який вказує f1. Слід розрізняти поняття вказівник на файл, який оголошується, як логічний файл, та вказівник файлу – адреса байта всередині файлу. При вводi-виводi вказівником файлу контролюється поточний номер байта, який саме вводиться чи виводиться. Параметр n визначає на скiльки байтiв слiд змiстити цей вказівник. Параметр k задає початкову позицiю, вiд якої потрiбно перемiстити вказівник, вiн може приймати значення: 0 - вiд початку файлу, 1 - вiд поточної позицiї, 2 - вiд кiнця файлу.

rewind(f1) – встановлення вказівника файлу на його початок, тобто те ж, що й функція fseek() з параметрами fseek(f1,0,0);

Таблиця ідентифікаторів:

Ідентифікатор |

Змінна

info[i][j] |

Масив рядків (для запису в файл )

inf[i]; |

Рядок (для читання з файлу)

z | Змінна для порівняння (функція пошуку)

i | Параметр циклу

Програма:

# include <stdio.h>

# include <stdlib.h>

# include <bios.h>

int i;

/*%%%%%%%%%%%%%%%%%%%%%%%

% Головна програма %

%%%%%%%%%%%%%%%%%%%%%%%%*/

main()

{

clrscr();

CREATE_FILE();

POSHYK();

getch();

}

/******************************************/

/* Функцiя створення файлу */

/******************************************/

CREATE_FILE()

{

FILE *ff;

char info[4][40]={"Dybovuc V.P. Vushcha matematuka.2004",

"Levchyk L.T. Estetuka. 2006",

"Tumchenko A.A. SAPR. 2000",

"Shushkin V.O. MOSP. 2005"};

if((ff=fopen("abc","w"))==NULL)

{printf("\nПомилка при вiдкриваннi файлу \n");exit(1);}

for(i=0;i<4;i++) fprintf(ff,"%s\n",info[i]);

if(fclose(ff)!=NULL)puts("Помилка при закриттi файлу");

}

/*================================

| Функцiя пошуку |

=================================*/

POSHYK()

{

char z,inf[100];

FILE *ff;

if((ff=fopen("abc","r"))==NULL)

{printf("\nПомилка при вiдкриваннi файлу \n");exit(1);}

printf("Введiть перщу букву прiзвища автора:\n");

scanf("%c",&z);

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

{

fseek(ff,i*40,0);

if(fgetc(ff)==z)

{

fseek(ff,-1,1);

fgets(inf,sizeof(inf),ff);

printf("Результати пошуку:\n%s",inf);

}

}

if(fclose(ff)!=NULL)puts("Помилка при закриттi файлу");

}

Результати:

Випадок1:

Введiть перщу букву прiзвища автора:

D

Результати пошуку:

Dybovuc V.P. Vushcha matematuka.2004

Випадок2:

Введiть перщу букву прiзвища автора:

S

Результати пошуку:

Shushkin V.O. MOSP. 2005

Висновок: Я вивчив засоби мови Сi для обробки файлiв за допомогою прямого доступу.


Сторінки: 1 2