Fișiere în limbajul C

Curs
9.5/10 (6 voturi)
Conține 1 fișier: doc
Pagini : 16 în total
Cuvinte : 7757
Mărime: 33.43KB (arhivat)
Publicat de: Demetra Simon
Puncte necesare: 0

Extras din curs

Capitolul I

Fisiere in ingineria programarii in C

1.1 Generalitati

Un fisier este o multime de informatii referitoare la o clasa de obiecte concrete sau abstracte. De exemplu, multimea informatiilor referitoare la angajatii unei societati comerciale constituie fisierul de personal, multimea informatiilor referitoare la materialele utilizate in procesul de productie poate constitui fisierul de stocuri materiale, multimea informatiilor referitoare la operatiile tehnologice ce se pot aplica reperelor si produselor formeaza fisierul de tehnologii, etc.

In afara fisierelor concrete, de tipul celor specificate anterior, pot sa existe fisiere cu continut abstract : ecuatii, documentatii tehnice, etc.

Fisierele se pot afla pe diverse suporturi fizice : discuri hard, discuri compact, discuri flexibile, etc.

Accsul la informatiile unui fisier aflat pe un suport extern de informatii se face prin intermediul unei variabile de tip fisier care trebuie sa faca obiectul unei declaratii adecvate in Limbajul C.

In general, orice fisier fizic aflat pe un suport extern trebuie sa fie identificabil. Acest lucru, sub orice sistem de operare, se face prin precizarea elementelor sale de identificare care constitue specificatorul de fisier.

In general, un specificator de fisier trebuie sa precizeze:

a) unitatea externa de informatii care contine suportul fizic al fisierului. Unitatea externa este identificata prin adresa simbolica recunoscuta de sistemul de operare gazda si prin intermediul careia acesta face legatura cu adresa fizica efectiva a perifericului respectiv.

b) calea prin intermediul careia se poate ajunge la fisierul fizic. Prin cale se intelege specificarea tuturor numelor zonelor si subzonelor de suport de memorie externa intr-o ierarhie de la superior la inferior separate printr-un delimitator (in general ""), a directorilor si subdirectorilor.

c) numele fisierului fizic care identifica un anumit fisier dintr-o multime de fisiere si subdirectori ale unui director.

d) tipul fisierului sau extensia fisierelor care identifica un fisier dintr-o multime de fisiere cu acelasi nume aflate in acelasi director.

Exemplu: Fie fisierul FPERS.DAT in subdirectorul TP6 al directorului DOS de pe unitatea de disc flexibil A.

Specificatorul fisierului va fi: A:DOSTP6FPERS.DAT

unde:

- C: specifica adresa simbolica a unitatii de floppy disc pe care se gaseste fisierul.

- DOS este numele zonei din discul flexibil , adica directorul.

- TP6 este numele unei subzone a directorului DOS (numele subdirectorului).

- FPERS este numele fisierului membru al subdirectorului TP6

- DAT este extensia sau tipul fisierului.

Daca fisierul se gaseste in directorul curent in care se lucreaza se specifica numai numele si extensia fisierului.

In contextul unui program sau functii se opereaza cu numele variabilei fisier definita in cadrul structurii de program a Limbajului C/C++ si nu cu specificatorul de fisier.

Asocierea dintre numele variabilei fisier si specificatorul fisierului extern trebuie sa se faca inaintea oricarei referiri la informatiile fisierului fizic prin intermediul unei operatii de asignare.

Limbajul C nu dispune de instructiuni proprii de intrare/iesire. Toate operatiile de intrare/iesire (I/O=Input/Output) se efectueaza prin intermediul apelarii unor functii speciale incluse in biblioteca standard a mediului de programare C, functii care respecta standardul ANSI C cu privirea la citirea sau scrierea oricarui tip de date. Deoarece C++ are la baza structura C, cu accent pe programarea pe obiect, atunci sistemul de fisiere ANSI C raspunde cel mai bine programarii operatiilor de intrare/iesire in C si C++.

Sistemul de fisiere ANSI C, in practica programarii operatiilor de intrare/iesire, opereaza cu doua categorii: fluxuri si fisiere.

Sistemul de fisiere al LC este conceput pentru permite lucrul cu o mare varietate de dispozitive periferice, inclusiv terminale, unitati de banda magnetica si discuri de orice tip. Desi unitatile de intrare/iesire sunt foarte diferite intre ele, sistemul de gestiune al fisierelor transforma pe fiecare dispozitiv de intrare/iesire intr-un dispozitiv logic numit flux. Fluxul sau stream-ul ofera o interfata abstracta intre programator si dispozitivul de intrare/iesire, indiferent de dispozitivul accesat, fluxul fiind independent de dispozitivul fizic de intrare/iesire. Din acest motiv se poate folosi aceeasi functie pentru a scrie date pe ecranul de afisaj (pe dispozitivul standard de iesire Output) sau pe orice alt dispozitiv de iesire (FD,HD,CD etc.) si aceeasi functie pentru a citi date de la tastatura (de pe dispozitivul standard de intrare Input) sau de la orice alt dispozitiv de intrare (FD,HD,CD, etc.). Din punct de vedere al fluxurilor de intrare/iesire in C exista doua tipuri de fluxuri:fluxuri text si fluxuri binare.

Un flux text este un sir de caractere ASCII numit si text. Fluxul text poate fi organizat in randuri sau linii care se termina printr-un caracter NL (New Line) in afara ultimei linii care, optional, se poate termina cu alt caracter diferit de NL (de exemplu sfarsit de text sau de fisier). Intr-un flux text pot surveni anumite conversii de caractere dictate de mediul gazda pe care este implementat C. De exemplu, caracterul NL poate fi convertit intr-o pereche de caractere (Carriage Return (CR) + Line Feed (LF)). Din acest motiv este posibil sa nu existe o relatie biunivoca intre caracterele citite sau scrise in fluxul text cu cele citite sau scrise pe dispozitivul fizic de intrare/iesire, atat ca numar cat si ca reprezentare.

Un flux binar este un sir de bytes (octeti) care corespund in mod biunivoc cu sirul de bytes (octeti) aflati pe dispozitivul fizic de intrare/iesire, nesurvenind nici-o conversie a continuturilor acestor bytes (octeti) in timpul operatiilor de citire/scriere. De asemenea, numarul de bytes (octeti) scrisi sau cititi de fluxul binar este acelasi cu numarul de bytes cititi sau scrisi efectiv pe dispozitivul fizic de intrare/iesire. Totusi, prin implementarea C, un numar de bytes (octeti) nuli pot fi utilizati pentru a completa o anumita informatie cu scopul de a ocupa, de exemplu, un sector intreg pe disc.

Un fisier in C poate fi orice, de la un terminal oarecare sau imprimanta pana la un fisier pe discuri (FD,HD,CD, etc.). Asignarea sau asocierea dintre un flux si un fisier se realizeaza numai prin executarea unei operatii de deschidere asupra acelui fisier. Numai dupa executarea unei operatii de deschidere se poate avea acces la informatiile unui fisier pentru a putea fi citite pentru prelucrare sau scrise dupa prelucrare. Nu toate fisierele au aceleasi caracteristici sau capacitati. De exemplu, un port de modem accepta numai accesul secvential in timp ce un fisier pe disc accepta atat accesul secvential cat si accesul direct (aleator). Prin deschiderea unui fisier are loc initializarea pointer-ului (indicatorului de pozitie) fisierului pe pozitia de inceput a fisierului iar la citirea sau scrierea unui caracter (octet) din sau in fisier are loc incrementarea pointer-ului asigurandu-se astfel avansul in fisier. Un fisier cu acces direct (aleator) poate accepta cereri de pozitionare a pointer-ului in fisier.

Daca asocierea dintre un flux si un fisier se realizeaza prin executarea unei operatii de deschidere atunci anularea acestei asignari (disocierea) se realizeaza prin executarea unei operatii de inchidere a fisierului. Daca fisierul a fost deschis pentru scriere atunci, prin executarea operatiei de inchidere, continutul fluxului asociat (daca exista) este scris pe dispozitivul de iesire asociat, proces cunoscut sub numele de flushing (golirea continutului fluxului) si reprezinta certitudinea ca nici-o informatie nu a ramas in memoria tampon a dispozitivului de iesire. Dupa executia normala a unui program toate fisierele sunt inchise automat, fie prin revenirea in sistemul de operare din functia main(), fie printr-o iesire fortata a programului la executarea functiei exit() iar prin terminarea anormala a unui program (cadere de tensiune sau executarea functiei abort()), fisierele nu sunt inchise automat. Fiecare flux asociat unui anumit fisier are o structura de control de tipe FILE definita in fisierul antet stdio.h care nu trebuie modificata niciodata. In limbajul C trebuie folosit un singur sistem de fisiere (ANSI C, de exemplu) pentru executarea oricarei operatii de intrare/iesire care converteste automat datele brute de la dispozitivele fizice de intrare/iesire intr-un flux logic usor de manipulat.

1.2. Fisiere in C. Operatii asupra fisierelor in C/C++

In limbajul C/C++ exista doua tipuri de fisiere, corespunzatoare celor doua tipuri de fluxuri: fisiere text si fisiere binare. Inaintea oricarui acces la informatiile dintr-un fisier trebuie executata o operatie de deschidere care valideaza logic orice operatie asupra continutului unui fisier cum ar fi: citirea datelor din fisier, scrierea datelor in fisier, pozitionarea pointerului de fisier, testarea sfarsitului de fisier, etc. Dupa terminarea prelucrarii informatiilor dintr-un fisier trebuie executata o operatie de inchidere logica a fisierului prin care se invalideaza accesul, in continuare, la informatiile fisierului.

Operatia de deschidere a unui fisier (functia fopen())

Operatia de deschidere in C se realizeaza cu functia predefinita fopen(), aflata in fisierul antet stdio.h, care are prototipul:

FILE *fopen(const char *numefis, const char *mod);

Si care se apeleaza astfel:

FILE *fopen(specfis,modd);

Preview document

Fișiere în limbajul C - Pagina 1
Fișiere în limbajul C - Pagina 2
Fișiere în limbajul C - Pagina 3
Fișiere în limbajul C - Pagina 4
Fișiere în limbajul C - Pagina 5
Fișiere în limbajul C - Pagina 6
Fișiere în limbajul C - Pagina 7
Fișiere în limbajul C - Pagina 8
Fișiere în limbajul C - Pagina 9
Fișiere în limbajul C - Pagina 10
Fișiere în limbajul C - Pagina 11
Fișiere în limbajul C - Pagina 12
Fișiere în limbajul C - Pagina 13
Fișiere în limbajul C - Pagina 14
Fișiere în limbajul C - Pagina 15
Fișiere în limbajul C - Pagina 16

Conținut arhivă zip

  • Fisiere in Limbajul C.doc

Alții au mai descărcat și

Manual Grafuri

1. Preliminarii 1.1. Algoritmi Toti algoritmii descrisi în cadrul acestei lucrari folosesc structuri de date de tip graf. Unele descrieri sînt...

Manual Limbaj C

1. Generalitati asupra limbajului C 1.1. Introducere Limbajul C a fost creat la începutul anilor '70 de catre Brian W Kernigham si Dennis M...

Noțiuni despre Algoritmi și Programare Structurată

2.1. Noţiuni introductive Rezolvarea problemelor cu ajutorul calculatorului presupune parcurgerea mai multor etape: 1. analiza problemei (cu...

Variabile

6. Variabile Prin variabilă se înţelege o dată a cărei valoare se poate schimba pe parcursul execuţiai programului. Unei variabile i se atribuie...

Instrucțiunile limbajului C++

5. Operaţii de intrare/ieşire În C, spre deosebire de alte limbaje, sistemul intrare/ieşire nu este parte a limbajului, ci este introdus printr-un...

Instrucțiuni

O instrucţiune este o parte a programului care poate fi executată. Aceasta înseamnă că o instrucţiune specifică o acţiune. Standardul ANSI C şi cel...

Instrucțiuni de intrare

7. Instrucţiuni de iterare Instrucţiunile de iterare (ciclare) permit ca un grup de instrucţiuni să se execute repetat, până se îndeplineşte o...

Tablouri și Șiruri de Caractere

Un tablou este o colecţie de variabilede acelaşi tip, apelate cu acelaşi nume. Tablourile sunt plasate într-o zonă de memorie contiguă. Accesul la...

Te-ar putea interesa și

Implementarea unei Interfețe Web pentru o Agenție de Turism

Introducere Lucrarea de faţă are ca şi scop realizarea unui site web pentru o agenţie de turism. Aplicaţia este realizată în ASP.NET, o platformă...

Teză de licență - formarea unui portal informativ

Introducere Actualitatea temei: Societatea informaţională este societatea în care producerea şi consumul de informaţie este cel mai important tip...

Tehnologii Web - Site de Publicitate

Introducere Prezenta lucare, intitulată, „Tehnologi internet. Site de publicitate ” urmăreşte prezentarea principalelor tehnici de realizare a...

Comerțul Electronic

1. Comerţul electronic - aspecte generale Termenul de „comerţ electronic” (e-comerţ) este din ce în ce mai mult discutat pe măsura ce Internetul...

Prelucrarea fișierelor în limbajul C - gestiunea cărților dintr-o librărie

Descrierea programului Programul realizat este un program multifunctional ce realizeaza gestiunea cartilor dintr-o librarie. Programul utilizeaza...

Baze de Date

1. Baze de date. Proiectare. Implementare. Gestionare Obiectivele acestui modul sunt: - Cunoaşterea noţiunilor de bază privind sistemele...

Tehnici Multimedia

Capitolul I. Notiuni introductive Conceptele cheie: Multimedia - reprezintă combinatia diferitelor tipuri de media livrate prin intermediul unui...

Ai nevoie de altceva?