Загальні відомості про файли.

Лекція 6.1: Файли – доступ, загальні відомості, відкриття та засоби відкриття.

Розділ 6: Робота з файлами.

Мета:ознайомити студентів з можливостями для роботи з файлами, які забезпечує мова С. Розглянути методи відкриття файлів та їх особливості, один відносно одного.

План:

1. Вступ. Загальні відмінності про файли.

2. Відкриття файлів, засоби відкриття файлів.

 

Файли призначені для зберігання інформації на зовнішніх носіях, тобто прийнято, що інформація, записана, наприклад, на диску, повинна перебувати усередині файлу. Звичайно під файлом розуміють іменовану частину простору на носії інформації.

Головне завдання файлової системи (file system) - сховати особливості вводу-виводу й дати програмістові просту абстрактну модель файлів, незалежних від пристроїв. Для читання, створення, видалення, запису, відкриття й закриття файлів також є велика категорія системних викликів (створення, видалення, відкриття, закриття, читання й т.д.). Користувачам добре знайомі такі пов'язані з організацією файлової системи поняття, як поточний каталог, кореневий каталог, шлях. Для маніпулювання цими об'єктами в операційній системі є системні виклики.

В тих випадках, коли програма обробляє достатньо великий об'єм даних, останні звичайно організовуються і зберігаються поза оперативною пам'яттю ЕОМ. Найефективнішим пристроєм для організації зовнішнього зберігання даних є диски. Перш ніж читати або записувати інформацию у файл, треба відкрити його за допомогою стандартної бібліотечної функції fopen. Програма, що використовує цю функцію, повинна включати під час компіляції системний файл stdio.h, в якому визначений новий тип даних - FILE.

У програмі потрібно описувати посилання на файли і виглядає це, наприклад, так: FILE *fu; Тут fu означає покажчик на FILE, а fopen видає посилання на цей файл. Функція fopen має наступний заголовок:

FILE *fopen( char *fname, char type);

Формальний синтаксис використання функції має наступний вигляд:

fu = fopen (“file_name”, “mode”);

Аргумент file_name – рядок, що містить імя файлу, який буде відкриватися, зазвичай цей рядо містить повний шлях до файлу.

Аргумент mode вказує режим відкриття файлу – для читання, запису або дозапису. Може приймати наступні значення:

r – відкриття файлу для читання. Якщо файл не існує, функція поверне NULL.

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

a – відкриття файлу для дописання даних. Якщо файл не існує, він створюється. Якщо існує – нові дані дописуються в кінець.

r+ - відкриття файлу для читання і запису. Якщо файл не існує, він створюється. Якщо існує – нові дані записуються на початку, затираючи вже існуючі.

w+ - відкриття файлу для читання і запису. Якщо файл не існує, він створюється. Якщо файл існує – він очищується (всі дані знищуються), а нові дані записуються в старий, очищений файл.

a+ - відкриття файлу для читання і дозапису. Якщо файл не існує, він створюється. Якщо існує – нові дані записуються в кінець.

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

Приклад.

Створити програму, яка перевіряє коректність відкриття файлу.

#include <stdio.h>

 

void main ()

{

FIFE *f;

char filename[80];

char mode[3];

puts ("vv. imia fajly, sho treba vidkrity");

scanf ("%s", &filename);

puts ("vv. rezhim vidkrittya fajly");

scanf ("%s", &mode);

f=fopen (filename, mode);

if (f==NULL) puts ("file open error!");

else

printf ("fajl %s v rezhimy %s vidkryto", filename, mode);

}