Astăzi ne vom uita la lucrul cu fișiere binare în C
Spre deosebire de fișierele text, fișierele binare sunt accesate în ordine aleatorie, nu secvențial. Prin urmare, fișierele binare sunt numite fișiere de acces aleatoriu.
O aplicație care intenționează să utilizeze fișiere cu acces aleatoriu trebuie să le creeze. Toate intrările dintr-un astfel de fișier trebuie să aibă aceeași lungime fixă. Datele pot fi inserate într-un fișier de acces direct fără a distruge alte date, modificate sau șterse fără a suprascrie întregul fișier.
Pentru a accesa un fișier binar (flux) în MVS, aveți nevoie de:
- Creați un fir de tip adecvat:
ifstream - pentru a introduce dintr-un fișier;
din flux - pentru a fi redactat într-un fișier;
fstream - pentru a schimba cu un fișier în două direcții.
- Conectați-l la un fișier de date și deschideți-l pentru a funcționa într-un anumit mod, cu modul binar obligatoriu :: binar (în mod implicit, firele deschise în modul text):
void ifstream :: open (const char * nume fișier, openmode mode = ios :: in | ios :: binary);
void dinstream :: open (const char * nume fișier,
modul openmode = ios :: out | ios :: truns | ios :: binar);
void fstream :: open (const char * numele fișierului,
modul openmode = ios :: în | ios :: out | ios :: binar);
unde numele fișierului este numele fișierului pe care specificatorul căii poate include;
mod - specifică modul de deschidere a fișierului (vedeți lucrarea de laborator nr. 10).
- Schimbul de date cu fișierul prin flux: scrieți în flux; citirea din flux; controlul stării fluxului.
Pentru a scrie într-un flux în C ++, utilizați metoda de scriere:
basic_ostream<_Elem, _Tr> scrieți (const char_type * _Str, streamsize _Count);
Pentru a citi din flux, folosiți metoda citită:
basic_istream<_Elem, _Tr> citiți (const char_type * _Str, streamsize _Count);
_Count numărul de octeți de ieșire (introdus)
_Str caractere ieșire (intrare) la (din) flux (a)
Accesul aleator la fișier se face prin setarea poziției curente în fișier utilizând metodele:
pentru fire deschise la intrare:
basic_istream<_Elem, _Tr> solicită (pos_type _Pos);
basic_istream<_Elem, _Tr> căutați (off_type _Off, ios_base :: seekdir _Way);
pentru fluxurile deschise la ieșire în C ++ este scris astfel:
basic_ostream<_Elem, _Tr> searchp (pos_type _Pos);
basic_ostream<_Elem, _Tr> searchp (off_type _Off, ios_base :: searchdir _Way);
Poziția Poziție în flux pentru citire (număr octet)
- Poziția de oprire față de _Way.
_Way unul dintre ios_base enumerations (beg, cur, end):