Файлова система. Файли послідовного доступу

2. Файли послідовного доступу. Загальна інформація

Для довгострокового збереження великих об'ємів даних використовуються файли.

Більшість комп'ютерних програм працює з файлами. Текстові процесори створюють файли документів. Програми баз даних створюють файли й роблять у них пошук інформації. Компілятори зчитують файли з вихідним кодом і генерують файли, що виконуються. Сам по собі файл - це набір байтів, що зберігаються на деякому пристрої


Операційна система управляє файлами, стежачи за їхнім місцем розташування, розміром, датою створення тощо. Якщо тільки ви не програмуєте на рівні операційної системи, про ці питання можна не турбуватися. Усе, що потрібно, - задати спосіб зв'язку програми з файлом, а також методи, які використовуються програмою при читанні вмісту файлу, запису у файл, а також при створенні нового файлу й запису в нього.

З логічної точки зору (на відміну від фізичної) файл – це група логічно пов'язаних записів. У свою чергу, запис – це група логічно пов'язаних полів даних.

•Існує багато способів організації записів у файлі. Найбільш розповсюджений називається послідовним файлом. У ньому записи зберігаються за порядком, визначеним деяким полем, яке, у свою чергу, називається ключовим полем.
•Мова С розглядає будь-який файл як послідовний потік байтів. Кожний файл закінчується маркером кінця файла. Коли файл відкривається, йому ставиться у відповідність потік. Потоки забезпечують канали передачі даних між файлами і програмами.

На початку виконання програми автоматично відкриваються три файли і пов'язані з ним потоки:

•стандартне введення,
•стандартне виведення, 
•стандартна помилка. 

Стандартний потік введення дозволяє програмі зчитувати дані з клавіатури. Для роботи зі стандартним потоком уведення використовується покажчик файла stdin.

Стандартний потік виведення дозволяє виводити дані на екран дисплея. Для роботи зі стандартним потоком виведення використовується покажчик файла stdout.

 Для роботи зі стандартним потоком помилок використовується покажчик файла stderr.


Відкритий файл повертає покажчик на структуру FILE (визначену в stdio.h). Ця структура містить інформацію, що використовується під час роботи з файлом.

Структура FILE включає дескриптор файла, тобто індекс у масиві операційної системи, який називається таблицею відкритих файлів. Кожний елемент масиву містить блок управління файлом (FCB), який використовується операційною системою для доступу до файла.

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

описати файл,

відкрити файл,

закрити файл.


Кожний файл описується як покажчик на структуру FILE. Наприклад,

FILE *cFptr;

об'являє, що  cFptr є покажчиком на структуру FILE.


Для відкриття файла і присвоєння значення змінній cFptr можна скористатися функцією fopen. Наприклад,

if (cFptr = fopen(“myfile.dat”,”w”)) == NULL)

printf (“Файл не можна відкрити!”);

дозволяє відкрити файл під назвою myfile.dat, зв'язати його з покажчиком cFptr та присвоїти цьому покажчику значення покажчика на структуру FILE.


Другий аргумент функції fopen  – “w” – вказує на режим відкриття файла, а саме на те, що файл повинен відкритися для запису. Якщо файла не існує, він буде створений. Якщо файл уже існує, в режимі “w” вміст файла буде знищений.

 Структура if у програмі використовується для того, щоби визначити значення покажчика cFptr. Якщо воно дорівнює NULL (відкриття файла не відбулося), друкується повідомлення про помилку.


Файли можуть бути відкрити в декількох режимах. Крім режиму “w”, який дозволяє створити файл і записати в нього дані, файл в разі необхідності може бути відкритий у режимі читання, в режимі запису даних у кінець файла, в об'єднаних режимах.

Зрозуміло, що, крім мінімально необхідних трьох операцій з файлом, програма виконує ще певні дії з ним. Якщо файл відкритий для запису, у програмі природно існування операції запису у файл. Це можна зробити за допомогою функції fprintf.

Приклад. 

#include <stdio.h>

#include <conio.h>

int main (void)

{

 float X, Y;

 FILE *fileX;

 clrscr();

 if (( fileX = fopen("fileX.txt","w")) == NULL)

  printf ("Error!");

 else


 {

  printf ("Input data. At the end of the introduction  press <ctrl>+z.\n") ;

  while ( !feof(stdin) )

  {

    printf("X,Y? ");

    scanf("%f %f", &X,&Y);

    if ( !feof(stdin) )

    fprintf(fileX, "%7.2f %7.2f\n",X, Y);

  }

  fclose (fileX);

 }

return 0;

}


Доступність

Шрифти Шрифти

Розмір шрифта Розмір шрифта

1

Колір тексту Колір тексту

Колір тла Колір тла

Кернінг шрифтів Кернінг шрифтів

Видимість картинок Видимість картинок

Інтервал між літерами Інтервал між літерами

0

Висота рядка Висота рядка

1.2

Виділити посилання Виділити посилання

Вирівнювання тексту Вирівнювання тексту

Ширина абзацу Ширина абзацу

0