Download - Prelucrarea fisierelor in C ATP

Transcript
  • 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 !