This is an old revision of the document!
Responsabil:
În urma parcurgerii acestui laborator studentul va fi capabil să:
Un fişier este o structură dinamică, situată în memoria secundară (pe disk-uri). Limbajul C permite operarea cu fişiere:
Prelucrarea unui fişier presupune asocierea acestuia cu un canal de I/E (numit flux sau stream). Există trei canale predefinite, care se deschid automat la lansarea unui program:
Pentru a prelucra un fişier, trebuie parcurse următoarele etape:
Mai jos se prezintă restul funcţiilor de prelucrare a fişierelor:
FILE *fopen(const char *nume_fis, const char *mod);
deschide fişierul cu numele dat pentru acces de tip mod.
Returnează pointer la fişier sau NULL dacă fişierul nu poate fi deschis; valoarea returnată este memorată în variabila fişier, care a fost declarată pentru accesarea lui.
Modul de deschidere poate fi:
informaţiei deja existente în fişier, deci pointerul de acces se plasează la sfârşitul fişierului )
de o scriere şi reciproc. Întâi trebuie repoziţionat cursorul de acces printr-un apel la fseek.
int fclose(FILE *fp);
închide fişierul şi eliberează zona tampon; returnează 0 la succes, EOF la eroare
int fseek(FILE *fp, long offset, int whence);
repoziţionează pointerul asociat unui fişier . Offset - numărul de octeţi între poziţia dată de whence şi noua poziţie.
whence - are una din cele trei valori posibile:
long ftell(FILE* fp);
întoarce poziţia curentă în cadrul lui fp
int fgetpos(FILE* fp, fpos_t* ptr);
această funcţie memorează în variabila fptr poziţia curentă în cadrul fişierului fp (ptr va putea fi folosit ulterior cu funcţia fsetpos).
int fsetpos(FILE* fp, const fpos_t* ptr);
această funcţie setează poziţia curentă în fişierul fp la valoarea ptr, obţinută anterior prin funcţia fgetpos.
int feof(FILE *fis);
returnează 0 dacă nu s-a detectat sfârşit de fişier la ultima operaţie de citire, respectiv o valoare nenulă (adevărată) pentru sfârşit de fişier.
FILE* freopen(const char* filename, const char* mode, FILE* fp);
se închide fişierul fp, se deschide fişierul cu numele filename în modul mode şi acesta se asociază la fp; se întoarce fp sau NULL în caz de eroare.
int fflush(FILE* fp);
Această funcţie se utilizează pentru fişierele deschise pentru scriere şi are ca efect scrierea în fişier a datelor din bufferul asociat acestuia, care înca nu au fost puse în fişier.
Citirea/scrierea în fişiere se poate face în doua moduri (în functie de tipul fişierului): în mod text sau în mod binar. Principalele diferenţe dintre cele doua moduri sunt: