Prelucrarea fiierelor n C
Prelucrarea fiierelor n COperaii generaleContext de lucru. Elemente specifice CFiiere standardFuncii C pentru prelucrarea fiierelorAlgoritmi
Operaii generaledescriere fiier (tabel cu caracteristici)asignare fiier intern la unul extern (fizic)deschidere fiieroperaii de acces la coninut (date)nchidere fiier
Context de lucru. Elemente specifice CTrebuie identificatetipurile de fiieremetode de organizaremoduri de accestipuri de articole
flux de octeisecvenialsecvenial, direct-
Fiiere standardGestionare automat, redirectare prin SO.stdin de intrare (n Pascal input)stdout de ieire (n Pascal output)stderr pentru afiarea erorilorstdaux asociat portului serial stdprn asociat imprimantei (port paralel)
Funcii C pentru prelucrare fiierelorExist dou niveluri de prelucrare:nivelul inferiornivelul superior asociaz o semnificaie fluxului de octei =>fiiere textfiiere binare
Nivelul superiorDescriere fiierPointer la tipul FILE (structur standard)
FILE* f;Funcii prelucrare generalscriere/citire cu conversiescriere/citire fr conversie
Funcii de prelucrare generalDeschidere i asignare (simultan)
FILE* fopen(const char *nume_extern, const char* mod);
Moduri de deschidere:arwa+r+w+modificatori: t bExemple:FILE* f, *g;f=fopen(studenti.dat, rwb);if(!(g=fopen(raport.txt, w)))printf(Insuficient spatiu pe disc);else { }
Operaia de gestiuneFiiere textFiiere binareCrearewwbConsultarerrbActualizare-r+bCreare i actualizarew+rwb, w+bExtinderea-
Funcii de prelucrare generalnchidere fiierint fclose(FILE* f);Revenire la nceputvoid rewind(FILE* f);Testare sfrit fiierint feof(FILE* f);Golirea zonei tampon int fflush(FILE* f);Aflarea poziiei curentelong ftell(FILE* f);Modificarea poziieiint fseek(FILE* f, long deplasare, int origine);Redenumire fiierint rename (const char* n_vechi,const char* n_nou);tergere fiierint remove (const char* nume);
Funcii de citire/scriere fr conversieScrieresize_t fwrite(const void* ptr, size_t dim, size_t n, FILE* f);Citiresize_t fread(const void* ptr, size_t dim, size_t n, FILE* f);Exemplustruct 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 conversieRealizeaz transferul cu conversie ntre repre-zentarea 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 conversieFuncii 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 explicitint fprintf(FILE* f,const char* format[,]);int fscanf(FILE* f,const char* format, adresa[,]);
AlgoritmiPrincipala diferen: testarea sfritului de fiierPascal:while not eof(f) dobegin end;C:
while(!feof(f)){ }
Spor la nvat !