Fisiere in C si C++

Imagine preview
(9/10 din 13 voturi)

Acest curs prezinta Fisiere in C si C++.
Mai jos poate fi vizualizat un extras din document (aprox. 2 pagini).

Arhiva contine 1 fisier doc de 12 pagini .

Iti recomandam sa te uiti bine pe extras si pe imaginile oferite iar daca este ceea ce-ti trebuie pentru documentarea ta, il poti descarca.

Fratele cel mare te iubeste, acest download este gratuit. Yupyy!

Domenii: Calculatoare, Automatica, Inteligenta Artificiala, Limbaje de Programare

Extras din document

2. Fisiere text si fisiere binare

Într-un fisier text, toate datele sunt memorate ca siruri de caractere, organizate pe linii, separate între ele prin marcajul sfârsit de linie ‘n’ .

Într-un fisier text spatiul de memorare pe disc nu este folosit în mod eficient pentru datele numerice (astfel întregul 12345 ocupa 5 octeti).

Într-un fisier binar, datele sunt pastrate în formatul lor intern (2 octeti pentru int, 4 octeti pentru float, etc).

La fisierele text marcajul de sfârsit de fisier (caracterul 0X1A) exista fizic în fisier. La întâlnirea acestui caracter functia fgetc() întoarce EOF (-1). Marcajul de sfârsit de fisier se genereaza de la tastatura prin Ctrl-Z.

În cazul fisierelor binare, marcajul de sfârsit de fisier nu exista fizic în fisier, ci este generat de functia fgetc().

În MSDOS (si în Unix), la nivelul liniei de comanda intrarile si iesirile standard pot fi redirectate în fisiere disc, fara a opera nici o modificare la nivelul programului. Astfel:

< redirecteaza intrarea standard catre fisierul specificat

> redirecteaza iesirea standard catre fisierul specificat

Fisierul standard de eroare nu poate fi redirectat.

Fisierul specificat poate fi:

con – pentru consola sistem (tastatura, respectiv ecranul)

prn – pentru imprimanta paralela

com1 – pentru interfata seriala de date

nume_fisier – pentru un fisier disc

NUL – pentru perifericul nul.

Exemple:

> test.exe > prn redirecteaza iesirea programului la imprimanta

> test.exe < f1.dat > f2.dat redirecteaza atât intrarea cât si iesirea programului

3. Accesul la fisiere.

Fisierele disc si fisierele standard sunt gestionate prin pointeri la structuri specializate FILE, care se asociaza fiecarui fisier pe durata prelucrarii.

Fisierele standard au pointerii predefiniti: stdin, stdout, stderr, stdprn, stdaux.

Declararea unui pointer la fisier se face prin:

FILE *pf;

1. deschiderea unui fisier:

Înainte de a fi prelucrat, un fisier trebuie sa fie deschis. Prin deschidere:

- se asociaza unui nume de fisier un pointer la fisier

- se stabileste un mod de acces la fisier

Pentru deschiderea unui fisier se foloseste functia cu prototipul:

FILE *fopen(char *nume_fisier, char *mod_acces);

Prin deschiderea unui fisier se stabileste o conexiune logica între fisier si variabila pointer si se aloca o zona de memorie (buffer) pentru realizarea mai eficienta a operatiilor de intrare / iesire. Functia întoarce:

- un pointer la fisier, în caz ca deschiderea fisierului se face în mod corect

- NULL daca fisierul nu poate fi deschis.

Vom considera mai întâi doua moduri de acces :

- citire (sau consultare) “r” – citirea dintr-un fisier inexistent va genera eroare

- scriere (sau creare) “w” - daca fisierul exista deja, el va fi sters

Fisierele standard nu trebuiesc deschise.

Redirectarea unui fisier deschis poate fi realizata cu:

FILE* freopen(char* nume, char* mod, FILE* flux));

Fisierul deschis este închis si este deschis un nou fisier având ca sursa fluxul, numele si modul de acces specificati ca parametri. O utilizare importanta o constituie redirectarea fluxului standard de intrare: datele vor fi citite din fisierul specificat, fara a face nici o modificare în program.

2. închiderea unui fisier

Dupa terminarea prelucrarilor asupra unui fisier, acesta trebuie închis. Un fisier este închis automat la apelarea functiei exit().

int fclose(FILE *pf);

- functia întoarce 0 la închidere normala si EOF la producerea unui incident

- fisierele standard nu se închid de catre programator

- în cazul unui fisier de iesire, se scriu datele ramase nescrise din buffer în fisier, asa ca operatia de închidere este obligatorie

- în cazul unui fisier de intrare, datele necitite din bufferul de intrare sunt abandonate

- se elibereaza bufferele alocate

- se întrerupe conexiunea pointer – fisier

Secventa urmatoare deschide un fisier cu un nume dat si apoi îl închide.

FILE *pf = fopen(“test1.dat”, ”w”);

fclose(pf);

Fisiere in arhiva (1):

  • Fisiere in C si C++.doc