Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОД_ЛАБ.doc
Скачиваний:
4
Добавлен:
14.11.2019
Размер:
1.04 Mб
Скачать

Процедури та функції тільки для типізованих файлів

SEEK(F,N) – позиціонування покажчика запису на запис з номером N. Перший запис файлу має номер 0.

FILEPOS(F) – функція визначає номер запису, на який вказує покажчик.

FILESIZE(F) – функція визначає кількість записів у файлі F.

EOLN(F) – функція приймає значення TRUE, якщо покажчик запису вказує на кінець рядка.

SEEKEOLN(F) -- аналогічно EOLN.

SEEKEOF(F) -- аналогічно EOF.

APPEND(F) – додавання записів у файл, виконується відкриття файлу F і встановлення покажчика на EOF.

READLN(F) – читання текстового файлу.

WRITELN(F) – запис у текстовий файл.

Теоретичні відомості (с) Вказівник на файлову змінну.

Зв’язуючою ланкою між файлом і потоком є вказівник на файл (file pointer). Це вказівник на інформацію, яка визначає різні боки файлу: ім’я, статус, поточну позицію. Він визначає ім’я файлу на диску.

У файлі stdio.h визначені також функції :

fopen() відкрити файл

fclose() закрити файл

fputc() записати символ в потік

fgetc() прочитати символ з потоку

fseek() змінити вказівник позиції файлу у вказане місце

fprintf() форматний запис у файл

fscanf() форматне читання з файлу

feof() повертає значення “істина”, якщо досягнутий кінець файлу

ferror() повертає значення “фальш”, якщо є помилка

fread() читає блок даних з потоку

fwrite() записує блок даних у потік

rewind() встановлює вказівник позиції файлу на початок

remove() знищує файл

Логічне ім’я файлу – це вказівник на файл. Його необхідно оголошувати так:

FILE *fopen( ), *lst;

Звертання до функції fopen() в програмі робиться так:

lst=fopen(<ім’я файлу на диску>,<вид операції>);

Види операції (вид використання файлу) : “w”- запис, ”r” - читання, ”a” – доповнення …

Якщо ми збираємось відкрити файл з іменем test для запису, то достатньо записати

FILE *fp;

fp=fopen(“test”,”w”);

Але рекомендується використовувати такий порядок відкриття файлу:

FILE *fp;

If((fp=fopen(“test”,”w”))==NULL) {

Puts(“Не можна відкрити файл \n”);

Exit(1);

}

Цей метод визначає помилку при відкритті файлу. Константа NULL визначена в stdio.h. Функція exit() має прототип у файлі stdlib.h

Void exit(int val);

Вона припиняє виконання програми, а величину val повертає в операційну систему (або в програму, яка її викликала). Всі відкриті файли будуть закриті. Крім того, є функція abort() з прототипом

Void abort(int val);

Вона негайно припиняє виконання програми без закриття файлів.

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

У системі програмування Borland C++ створена друга система вводу/виводу, ця система відповідає стандарту UNIX. Прототипи функцій знаходяться у файлі io.h. Цими функціями є:

read() читає буфер даних,

write() пише в буфер даних,

open() відкриває файл,

close() закриває файл,

lseek() пошук певного байта у файлі,

unlink() знищує файл.

Після закінчення роботи зфайлом він повинен бути закритий. Це можна зробити за допомогою бібліотечної функції fclose(), наприклад fclose(lst);

Приклад : вивід інформації на принтер.

#include <stdio.h>

main()

{

int i=150;

FILE *fopen(), *lst; /* FILE –ім’я файлового типу (подібно до int або float); fopen – бібліотечна функція відкриття файлу(вона повнртає вказівник на внутрішнє ім’я відкритого файлу); lst – вказівник на файл (об’єкт типу FILE ). */

lst=fopen(“prn”,”w”); /*lst отримує адресу відкритого файлу з іменем prn , призначеного для запису в нього інформації (символ w); Вся інформація з файлу з адресом lst буде виводитись на друкуючий пристрій. */

fprintf(lst,”\n число i=%d”,i); /* Тут lst – вказівник на файл. На друк буде виведений рядокчисло і=150” */

fclose(lst); /*Функція fclose закриває файл зі вказівником lst ; Тепер посилання lst можна використовувати для іншого файла. */

}

В якості першого параметра у функції fprintf стоїть логічне ім’я (вказівник) файла.

Другий приклад показує організацію виводу інформації на диск.

include <stdio.h>

main()

{

int i=150;

FILE *fopen(), *lds;

lds=fopen(“c:zni.f”,”w”);

fprintf(lds,”\n число i=%d”,i);

fclose(lds);

}

У файл буде записано ціле число 150;

Аналогічно можна записати і для читання з диска і для доповнення файла на диску.

Ще один приклад – програма створення копії файлу.

#include <stdio.h>

main()

{

File *fopen(), *or, *co;

If (( or = fopen(“to1.doc”,”r”)) = = null)

{printf (“ Відкрити вихідний файл не вдалось \n”);

return;

}

while (!feof(or))

fputc(fgetc(or),co); /* fgetc(or) – читає символ з файлу or; fputc(co) – записує символ у файл co*/

}

Для одночасного закриття всіх файлів використовують функцію Fcloseall( )

Приклад. Сформувати файл, що містить інформацію про розклад руху поїздів, які відправляються з Івано-Франківського вокзалу: номер поїзду, час відправлення, станція призначення, час у дорозі. Використовуючи ці дані, надати інформацію про розклад руху поїздів до станції Київ, які відправляються з 20 до 24 години, і перебувають у дорозі менше 15 годин.