Sunteți pe pagina 1din 25

PROGRAMAREA IN

LIMBAJELE C/C++

Note de curs 2009-2010


Diana Stefanescu
Diana.Stefanescu@ugal.ro

FISIERE 1
CUPRINS
1. NOłIUNI INTRODUCTIVE
2. DATE, OPERATORI ŞI EXPRESII
3. IMPLEMENTAREA STRUCTURILOR DE CONTROL
4. TABLOURI
5. POINTERI
6. FUNCłII
7. TIPURI DE DATE DEFINITE DE UTILIZATOR
8. FISIERE

FISIERE 2
CAPITOLUL 8

FISIERE

FISIERE 3
CAP. 8. FISIERE
1. Caracteristici generale
2. Deschiderea unui fisier
3. Inchiderea unui fisier
4. Prelucrarea fisierelor text
1. Prelucrarea la nivel de caracter
2. Prelucrarea la nivel de cuvânt
3. Prelucrarea la nivel de caractere
4. Intrari/iesiri formatate
5. Intrari/iesiri binare
6. Pozitionarea intr-un fisier
7. Functii utilitare de lucru cu fisierele
8. Alte operatii cu fisiere
FISIERE 4
1. Caracteristici generale
 Notiunea de fisier
 Caracteristicile unui fisier
 Dispozitivul logic de memorare (discul);
 Calea;
 Numele si extensia;
 Atributele.
 Avantajele lucrului cu fisiere
 C: operatiile cu fisiere – prin functii din <stdio.h>
 Transferurile de inf. se realizează prin intermediul unor
dispozitive logice numite stream-uri (fluxuri) şi prin
intermediul sistemului de operare.
 Flux de date = fişier tratat printr-un pointer la o
structură de tip FILE.
FISIERE 5
Caracteristici generale (cont)
 Fluxuri de date predefinite, deschise automat la
executia unui program:
 stdin
 stdout
 stderr
 stdaux, stdprn.
 Fluxuri de tip:
 text
 binar.
 Doua niveluri de prelucrare a fisierelor:
 nivelul superior (functii din <stdio.h>, FILE)
FILE *f;
 nivelul inferior (facilitatile SO, <io.h>, handle)
FISIERE 6
Operatii asupra fisierelor
 deschiderea unui fisier:
 scrierea intr-un fisier;
 citirea dintr-un fisier;
 pozitionarea intr-un fisier;
 inchiderea intr-un fisier.

FISIERE 7
2. Deschiderea unui fisier
 Functiile:
 fopen, freopen (<stdio.h>
 open (<io.h>)
FILE *fopen(const char *<n_f>,const char*<md>);
 Mod deschidere:
 r : flux de date de intrare; deschidere pentru citire;
 w : flux de date de ieşire; deschidere pentru scriere (crează un fişier nou
sau suprascrie conŃinutul anterior al fişierului existent);
 a : flux de date de ieşire cu scriere la sfârşitul fişierului, adăugare, sau
crearea fişierului în cazul în care acesta nu există;
 + : extinde un flux de intrare sau ieşire la unul de intrare/ieşire; operaŃii de
scriere şi citire asupra unui fişier deschis în condiŃiile r, w sau a.
 b : date binare;
 t : date text (modul implicit).

FISIERE 8
Deschiderea unui fisier (cont)
FILE *fopen(const char *<n_f>,const char*<md>);
 Mod deschidere:
 r : flux de date de intrare; deschidere pentru citire;
 w : flux de date de ieşire; deschidere pentru scriere (crează un fişier
nou sau suprascrie conŃinutul anterior al fişierului existent);
 a : flux de date de ieşire cu scriere la sfârşitul fişierului, adăugare,
sau crearea fişierului în cazul în care acesta nu există;
 + : extinde un flux de intrare sau ieşire la unul de intrare/ieşire;
operaŃii de scriere şi citire asupra unui fişier deschis în condiŃiile r, w
sau a.
 b : date binare;
 t : date text (modul implicit).

FISIERE 9
Deschiderea unui fisier (cont)
FILE *freopen(const char *<n>,const char*<m>,FILE* <p>);

int open(const char *<fişier>,int <acces> [,int <mod>]);


O_RDONLY - citire;
O_WRONLY - scriere
O_RDWR - citire şi scriere
O_CREAT - creare
O_APPEND - adăugare la sfârşitul fişierului
O_TEXT - interpretare CR-LF
O_BINARY - nici o interpretare

int creat(const char *<nume_fişier>, int <un_mod>);


int creatnew(const char *<nume_fişier>, int <mod>);

FISIERE 10
3. Inchiderea unui fisier
 Functiile:
 fclose, fcloseall (<stdio.h>
 close (<io.h>)

int fclose(FILE *<flux>);


int fcloseall(void);

int close(int <indicator>);

FISIERE 11
4. Prelucrarea fisierelor text
 I/O la nivel de caracter
 I/O la nivel de cuvant de memorie
 I/O la nivel de sir de caractere
 I/O formatate

FISIERE 12
Prelucrarea fisierelor text
I/O la nivel de caracter (octet)

 Functiile:
 fputc
 fgetc

int fputc (int <c>, FILE *<flux>);


int fgetc (FILE *<flux>);

FISIERE 13
Prelucrarea fisierelor text
I/O la nivel de caracter (octet)

FISIERE 14
Prelucrarea fisierelor text
I/O la nivel de cuvant

 Functiile:
 fputw
 fgetw

int fputw (int <cuv>, FILE *<flux>);


int fgetw (FILE *<flux>);

FISIERE 15
Prelucrarea fisierelor text
I/O la nivel de cuvant

int tab[100]; FILE *pf;


while (!feof(pf)){
for (int i=0; i<100; i++)
{if (feof(pf)) break;
tab[i]=fgetw(pf);
// . . .
}
} printf("Sfarşit de fişier\n");

FISIERE 16
Prelucrarea fisierelor text
I/O la nivel de sir de caractere

 Functiile:
 fputs
 fgets

int fputs (const char * <s>, FILE *<flux>);


char * fgets (char * <s>,int <dim>,FILE *<f>);

FISIERE 17
Prelucrarea fisierelor text
I/O la nivel de sir de caractere
#include <stdio.h>
int main()
{int n=250; FILE *pfsir;
char sir[250],*psir; pfsir=fopen("f_sir.txt","w");
psir=fgets(sir,n,stdin);
while(psir!=NULL)
{fputs(sir,pfsir); psir=fgets(sir,n,stdin); }
fclose(pfsir);

pfsir=fopen("f_sir.txt","r"); psir=fgets(sir,n,pfsir);
while(psir!=NULL)
{ fputs(sir,stdout); psir=fgets(sir,n,pfsir); }
fclose(pfsir);}
} FISIERE 18
Prelucrarea fisierelor text
I/O formatate

 Functiile:
 fprintf
 fscanf

int fprintf (FILE *<f>, const char * <fm>,...);


int fscanf (FILE *<f>, const char * <fm>,...);

FISIERE 19
5. Prelucrarea fisierelor binare

 Functiile:
 fread
 fwrite

size_t fread(void *<buf>,size_t <dim>,size_t


<n>, FILE *<f>);
size_t fwrite(const void *<buf>,size_t
<dim>,size_t <n>,FILE *<flux>);

FISIERE 20
Prelucrarea fisierelor binare

FISIERE 21
Exemplu:

FISIERE 22
6. Pozitionarea intr-un fisier
int fseek(FILE *<pf>, long <depl>, int <ref>);
ref: 0 - începutul fişierului (SEEK_SET);
1 - poziŃia curentă a capului (SEEK_CUR);
2 - sfârşitul fişierului (SEEK_END).
int fgetpos(FILE *<f>, fpos_t *<poziŃie>);
int fsetpos(FILE *<f>, const fpos_t *<poz>);
 Modificarea valorii indicatorului de poziŃie şi de
determinare a poziŃiei curente
long ftell(FILE *<pf>);
void rewind(FILE *<flux_date>);

FISIERE 23
7. Functii utilitare
 Testarea intalnirii sfarsitului de fisier (numai f. text!!!):
int feof(FILE *<flux_date>);
 Golirea fluxurilor de date (a buffer-lor):
int fflush(FILE *<flux_date>);
int flushall(void);

FISIERE 24
8. Alte operatii cu fisiere
 Stergerea unui fisier:
int remove(const char *<nume_fişier>);
 Redenumire:
int rename(const char *<n_v>,const char
*<n_n>);
 Modificarea dimensiunii:
int chsize(int <indicator>, long <lungime>);

FISIERE 25

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