Бінарні файли c, робота з бінарними файлами в с - life-prog

Сьогодні ми розглянемо роботу з бінарними файлами в мові Сі

На відміну від текстових файлів доступ до елементів бінарних файлів виконується в довільному порядку, а не послідовно. Тому бінарні файли називають файлами довільного доступу.

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

Для отримання доступу до бінарним файлу (потоку) в MVS потрібно:

  1. Створити потік відповідного типу:

ifstream - для введення з файлу;

ofstream - для виведення в файл;

fstream - для обміну з файлом в двох напрямках.

  1. Зв'язати його з файлом даних і відкрити (open) для роботи в певному режимі, з обов'язковим зазначенням довічного режімаios :: binary (за замовчуванням потоки відкриваються в текстовому режимі):

void ifstream :: open (const char * имя_файла, openmode режим = ios :: in | ios :: binary);

void ofstream :: open (const char * имя_файла,
openmode режим = ios :: out | ios :: trunс | ios :: binary);

void fstream :: open (const char * имя_файла,
openmode режим = ios :: in | ios :: out | ios :: binary);

де ім'я файлу - ім'я файлу, в яке може входити специфікатор шляху;

режим - задає режим відкриття файлу (див. лаб. роб. №10).

  1. Обмін даними з файлом через потік: запис в потік; читання з потоку; управління станом потоку.

Для запису в потік в C ++ використовується метод write:

basic_ostream<_Elem, _Tr> write (const char_type * _Str, streamsize _Count);

Для читання з потоку використовується метод read:

basic_istream<_Elem, _Tr> read (const char_type * _Str, streamsize _Count);

_Count число виведених (вводяться) в потік байт

_Str символи виводяться (вводяться) в (з) потік (а)

Довільний доступ до файлу здійснюється шляхом установки поточної позиції у файлі за допомогою методів:

для потоків відкритих на введення:

basic_istream<_Elem, _Tr> seekg (pos_type _Pos);

basic_istream<_Elem, _Tr> seekg (off_type _Off, ios_base :: seekdir _Way);

для потоків відкритих на висновок в C ++ пишеться так:

basic_ostream<_Elem, _Tr> seekp (pos_type _Pos);

basic_ostream<_Elem, _Tr> seekp (off_type _Off, ios_base :: seekdir _Way);

_Pos позиція в потоці для читання (номер байта)

_Off позиція щодо _Way.

_Way одне з перерахувань ios_base (beg, cur, end):

Схожі статті