Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Operatii cu fisiere

c



+ Font mai mare | - Font mai mic



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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 757
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved