La lansarea in executie a oricarui program se "deschid" in mod automat 3 dispozitive/fisiere/streamuri standard:
stdin standard input): dispozitivul standard de intrare, asociat in mod implicit cu tastatura
stdout standard otuput): dispozitivul standard de iesire, asociat in mod implicit cu display-ul
stderr standard error): dispozitivul standard pentru comunicarea mesajelor de eroare, asociat intotdeauna cu display-ul
Stdin si respectiv stdout pot fi redirectate astfel incat intrarea sa se faca dintr-un fisier, respectiv iesirea sa se faca intr-un fisier.
Doua modele:
Modelul cu streamuri: streamuri (dispozitive logice de I/O), pentru care functia de deschidere (fopen) pregateste un bloc de control al fisierului (FCB, o structura de tip FILE, prin intermediul caruia se efectueaza/gestioneaza toate operatiile asupra fisierului) si intoarce un pointer (file pointer) spre acest bloc de control. Blocul de control al fisierelor se pastreaza in memoria programului ceea ce constituie principalul dezavantaj al modelului: din eroare, se poate altera continutul FCB, pentru ca este accesibil! Avantaj: este mai eficient si este adaptabil diverselor tipuri de SO.
Standardul C promoveaza modelul cu streamuri tolerand insa si modelul UNIX
Pentru a putea opera asupra unui stream/fisier, acesta trebuie "deschis" (fopen), adica trebuie conectat programul la dispozitivul de I/O vizat.
Operatiile asupra unui stream deschis se pot rezuma astfel:
Citire
Scriere
Actualizare
Adaugare
Pe de alta parte operatiile de acces la continutul unui fisier se poate face buferizat (prin intermediul unui buffer) sau nebuferizat (direct, byte cu byte).
Un stream asupra caruia nu se mai efectueaza operatii trebuie "inchis" (fclose
In functie de continut, fisierele sunt de doua tipuri:
|