Sunteți pe pagina 1din 14

Prelucrarea

fiierelor n
C

Prelucrarea fiierelor n C

Operaii generale
Context de lucru. Elemente specifice C
Fiiere standard
Funcii C pentru prelucrarea fiierelor
Algoritmi

Operaii generale

descriere fiier (tabel cu caracteristici)


asignare fiier intern la unul extern (fizic)
deschidere fiier
operaii de acces la coninut (date)
nchidere fiier

Context de lucru. Elemente


specifice C
Trebuie identificate

tipurile de fiiere
metode de organizare
moduri de acces
tipuri de articole

Cobol
flux de octei
Pascal
secvenial
secvenial, direct
C

Fiiere standard
Gestionare automat, redirectare prin SO.
stdin de intrare (n Pascal input)
stdout de ieire (n Pascal output)
stderr pentru afiarea erorilor
stdaux asociat portului serial
stdprn asociat imprimantei (port paralel)

Funcii C pentru prelucrare


fiierelor
Exist dou niveluri de prelucrare:
nivelul inferior
nivelul superior asociaz o
semnificaie fluxului de octei =>

fiiere text
fiiere binare

Nivelul superior
Descriere fiier
Pointer la tipul FILE (structur standard)
FILE* f;

Funcii
prelucrare general
scriere/citire cu conversie
scriere/citire fr conversie

Funcii de prelucrare general


Deschidere i asignare (simultan)
FILE* fopen(const char *nume_extern, const char* mod);
Moduri de deschidere:
a r
w a+
r+ w+
modificatori: t b

Exemple:

Operaia de gestiune

FILE* f, *g;
Creare

Fiiere text

Fiiere binare

wb

f=fopen(studenti.dat,
rwb);
Consultare
r
rb
Actualizare
r+b
if(!(g=fopen(raport.txt,
w)))
Creare i actualizare
w+
rwb, w+b

printf(Insuficient spatiu pe disc);

Extindere

else { }

Funcii de prelucrare general


Modificarea
poziiei
nchidere fiier
int fclose(FILE* f);
int
fseek(FILE*
f, long deplasare,void
int origine);
Revenire
la nceput
rewind(FILE* f);
Redenumire
Testare sfritfiier
fiier
int feof(FILE* f);
int rename (const char* n_vechi,const char* n_nou);
Golirea zonei tampon
int fflush(FILE* f);
tergere fiier
Aflarea poziiei curente long ftell(FILE* f);
int remove (const char* nume);

Funcii de citire/scriere fr conversie


Scriere
size_t fwrite(const void* ptr, size_t dim, size_t n, FILE* f);

Citire
size_t fread(const void* ptr, size_t dim, size_t n, FILE* f);

Exemplu
struct complex{float r,i;}art;
FILE* f;
if(f=fopen(numere.dat,r+b))
{fread(&art, sizeof(art), 1, f); rewind(f);
art.r=7;art.i=9; fwrite(&art, sizeof(art), 1, f);}
else printf(Fisierul nu poate fi deschis);

Funcii de citire/scriere cu conversie


Realizeaz transferul cu conversie ntre reprezentarea intern (binar) i cea extern (ASCII)
Funcii pentru transferul de caractere
int fgetc(FILE* f);
int fputc(int c, FILE *f);
int getc(FILE* f);
int putc(int c, FILE *f);

Funcii de citire/scriere cu conversie


Funcii pentru transferul de iruri caractere
char* fgets(char* s,int n,FILE* f);
int fputs(const char* s,FILE* f);

Funcii de transfer cu formatare explicit


int fprintf(FILE* f,const char* format[,]);
int fscanf(FILE* f,const char* format, adresa[,]);

Algoritmi
Principala diferen: testarea sfritului de fiier
Pascal:

C:

while not eof(f) do


begin <citire articol>
<prelucrare articol
citit>
end;

<citire articol>
while(!feof(f))
{ <prelucrare articol
citit>
<citire articol>}

Spor la
nvat !

S-ar putea să vă placă și