CATEGORII DOCUMENTE |
Operatii cu fisiere
In acest subcapitol vom detalia principalele operatii efectuate asupra unor fisiere.
In timpul lucrului cu fisierele, sistemul de operare pastreaza un indicator de fisier care indica pozitia curenta in fisier, pozitie la care se va face urmatoarea operatie de scriere sau citire. De exemplu, la deschiderea unui fisier pentru citire indicatorul de fisier va indica la inceputul fisierului. Daca se va face o operatie de citire a 2 octeti se vor citi octetii cu numarul de ordine 0 si 1 iar indicatorul va indica spre urmatorul octet, adica cel cu numarul de ordine 3.
Pentru o mai corecta intelegere a acestor functii le vom structura dupa nivelul la care se utilizeaza: inferior sau superior.
In momentul inceperii executiei unui program, interfetele standard (cu ecranul, tastatura si porturile seriale si paralele) sunt deschise in mod text.
Principalele functii sunt grupate in tabelul de mai jos:
Descriere |
Nume functie de nivel inferior |
Nume functie de nivel superior |
Deschidere |
_open |
fopen |
Creare |
_creat |
fcreate |
Citire |
_read |
fread |
Scriere |
_write |
fwrite |
Inchidere |
_close |
fclose |
Pozitionare |
_lseek |
fseek |
Stergere |
_unlink |
remove |
Redenumire |
_rename |
rename |
In afara acestor functii principale mai exista anumite functii specializate, cum ar fi:
Functii pentru prelucrarea pe caractere a unui fisier: putc (scriere caracter) si getc (citire caracter).
Functii pentru Intrari/Iesiri cu format: fscanf si fprintf.
Functii pentru Intrari/Iesiri de siruri de caractere: fgets si fputs.
Pentru ca sistemul de operare sa poata opera asupra fisierelor ca fluxuri (stream) de intrare/iesire trebuie sa cunoasca anumite informatii despre ele. Acest lucru se realizeaza prin operatia de deschidere a fluxurilor (stream-urilor).
Pointerul fisier
In urma operatiei de deschidere se creaza in memorie o variabila de tip structura FILE care este o structura predefinita. In aceasta variabila, care se numeste bloc de control al fisierului, FCB (File Control Block) sistemul pastreaza informatii despre fisierul deschis, precum:
Nume
Dimensiune
Atribute fisier
Descriptorul fisierului
Un pointer-fisier este un pointer la informatiile care definesc diferitele aspecte ale unui fisier: nume, stare, pozitie curenta. Un pointer-fisier este o variabila pointer de tip FILE, definita in 'stdio.h'.
Tipul FILE este un tip structurat care depinde de sistemul de operare. Daca facem abstractie de cazurile speciale de calculatoare tip VAX sau U3B, pe majoritatea implementarilor tipul FILE se defineste prin urmatoarea structura:
typedef struct FILE;
Variabila de tip FILE este creata si gestionata de catre suportul pentru exploatarea fisierelor in limbajul C. In urma deschiderii unui fisier, programul primeste un pointer la variabila creata, deci un pointer la o structura de tip FILE. Se spune ca s-a deschis un stream (flux de date). Toate operatiile care se fac pe acest stream se refera la fisierul asociat stream-ului.
In limbajul C exista 5 stream-uri standard, definite in <stdio.h>:
FILE *stdin;
care se refera la dispozitivul standard de intrare (tastatura). Orice operatie de citire de la stream-ul stdin inseamna citire de la tastatura. Bufferul folosit are o dimensiune de 254 de caractere si bufferul se goleste la tastarea NL ('n'). Se mai spune ca stdin este cu buffer la nivel de linie.
FILE *stdout;
care se refera la dispozitivul standard de iesire (ecranul). Orice operatie de scriere la stream-ul stdout inseamna scriere pe ecran. Spre deosebire de stdin, stdout este ne-bufferizat deoarece orice scriere pe ecran se face direct la scrierea unui caracter in fisierul stdout.
FILE *stderr;
care se refera la dispozitivul standard pentru afisarea mesajelor de eroare (ecranul). Este ne-bufferizat.
FILE *stdprn;
care se refera la primul port paralel PRN la care se conecteaza de obicei imprimanta (LPT). Este bufferizat la nivel linie.
FILE *stdaux;
care se refera la primul port serial COM1. Este ne-bufferizat.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 835
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved