Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Utilizarea fisierelor

c


Utilizarea fisierelor

Prelucrarea fisierelor se poate efectua la doua nivele:



à       Nivelul inferior - face apel direct la sistemul de operare;

à       Nivelul superior - utilizeaza proceduri speciale pentru operatii de intrare/iesire.

Nivelul inferior

Prelucrarile la acest nivel permit urmatoarele cinci operatii:

Deschiderea unui fisier (Open/Creat)

int open ( const char cale int acces ) ;

unde:

à     cale - este specificatorul de fisier,

à     acces - poate fi o combinatie (utilizand operatorul '|') a urmatoarelor valori: O_RDONLY (fisier deschis numai pentru citire), O_WRONLY sau O_CREAT (numai pentru scriere - creare), O_RDWR (citire/scriere), O_APPEND (deschis pentru adaugare la sfarsit), O_BINARY (pentru prelucrare binara O_TEXT (pentru fisier de tip text).

Daca deschiderea fisierului s-a realizat corect, atunci functia returneaza o valoare intreaga reprezentand descriptorul de fisier LUN, care va fi utilizat in continuare la celelelte operatii efectuate asupra acestui fisier), iar in caz de nereusita se va returna valoarea -1.

Pentru a putea utiliza functia Open trebuie incluse fisierele header io.h si fcntl.h.

Exemplu:

int    Lun;

Lun = open ("Fisier.Dat",ORDONLY);

Pentru crearea unui fisier se va apela functia Creat:

int creat ( const char cale int mod ) ;

unde:

à     mod - poate lua una dintre valorile: S_IREAD (fisierul se poate citi), S_IWRITE (scriere in fisier), S_IEXEC (executia programului din fisierul specificat).

Pentru a putea utiliza functia Creat trebuie incluse fisierele io.h si stat.h.

Fisierele text sunt implicite.

Citirea dintr-un fisier (Read)

int read ( int Lun void buffer, unsigned lung ) ;

unde:

à     Lun - este descriptorul definit la deschidere (0=STDIN STDOUT STDERR STDPRN STDAUX

à     buffer - este zona de memorie in care se citeste,

à     lung - este lungimea (in octeti) a inregistrarii citite.

Functia returneaza numarul de octeti cititi (cel mult lung), 0 la sfarsit, sau -1 in caz de eroare. Automat, dupa o citire (a articolului curent) se trece la urmatorul articol, implicit prima pozitionare fiind la inceput de fisier (acces secvential).

Pentru a utiliza functiile Read, Write, LSeek sau Close trebuie inclus fisierul io.h.

Scrierea intr-un fisier (Write)

int write ( int Lun void buffer, unsigned lung ) ;

Functia returneaza numarul de octeti scrisi in fisier, reprezentand lungimea articolului = lung, sau -1 in caz de eroare.

Pozitionarea intr-un fisier (LSeek)

Aceasta functie permite accesul aleator printr-un apel de forma:

long lseek ( int Lun long deplasament, int origine ) ;

unde:

à     deplasament - reprezinta numarul de octeti peste care se deplaseaza capul de citire/scriere,

à     origine - reprezinta punctul din care se masoara deplasament-ul (0=inceputul fisierului, 1=pozitia curenta, 2=sfarsitul fisierului).

Functia returneaza pozitia curenta fata de inceputul fisierului, sau -1 la eroare.

Inchiderea unui fisier (Close)

int close ( int Lun

Functia returneaza 0 la o inchidere corecta, sau -1 la eroare.

Stergerea unui fisier (UnLink)

int unlink (const char cale

Functia returneaza 0 la o stergere corecta sau -1 la eroare.

Exemple:

// Creare

#include <io.h>

#include <fcntl.h>

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

void main (void)

else cout << ' Open Incorect ! ';

close(Lun);

getchar();

// Citire

#include <io.h>

#include <fcntl.h>

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

void main (void)

else cout << ' Open Incorect ! ';

close(Lun);

getchar();

Nivelul superior

La acest nivel sunt posibile urmatoarele operatii:

Deschiderea unui fisier (FOpen)

FILE    fopen ( const char cale const char mod

unde:

à     mod - poate fi "r" pentru deschidere in citire, "w" pentru scriere, "a" pentru adaugare, "r " pentru modificare (citire/scriere), "rb" pentru citire binara, "wb" pentru scriere binara, sau "r+b" pentru citire/scriere binara.

Daca la deschiderea fisierului s-a ales modul "w" sau "a", fisierul va fi creat (recreat).

Functia returneaza un pointer spre tipul FILE definit in fisierul stdio.h, iar in caz de nereusita se va returna valoarea NULL (stdin, stdout, stderr, stdaux si stdprn sunt pointeri spre tipul FILE permitand transferuri fara a fi necesara deschiderea sau inchiderea lor).

Exemplu:

FILE Pf;

Pf = fopen ("Fisier.Dat","w");

Prelucrarea pe caractere a unui fisier (PutC, GetC)

int putc ( int c, FILE Pf

unde:

à     c - este codul caracterului scris,

à     Pf - este valoarea returnata la deschidere sau stdin, stdout, stderr, stdaux, stdprn

Functia returneaza valoarea lui c sau -1 la eroare.

int getc FILE Pf

Functia returneaza codul caracterului citit, sau valoarea EOF la sfarsitul fisierului, sau -1 la eroare.

Exemplu:

#include <stdio.h>

void main (void)

Inchiderea unui fisier (FClose)

int fclose FILE Pf

Functia returneaza 0 la inchiderea corecta a fisierului sau 1 la eroare.

Citirea/Scrierea cu format (FScanF, FPrintF)

int fscanf FILE Pf , control, lista_variabile) ;

Parametrii control si lista_variabile au aceeasi semnificatie ca si pentru functia scanf.

Functia returneaza numarul de campuri citite sau EOF

int fprintf FILE Pf , control, lista_expresii) ;

Functia returneaza numarul de caractere scrise in fisier sau -1 la eroare.

Ex.1:

Creare fisier text cu Nume, Prenume

#include <stdio.h>

#include <conio.h>

int Citit(char *x, char*y)

void main (void)

Ex.2:

// Creare fisier text cu format (articole : (Den, Cant, Pret)

#include <stdio.h>

#include <conio.h>

void main (void)

}

while (!Eof); fclose (Produse); }

else printf (' Open incorect'); getchar();

// Listare fisier text

#include <stdio.h>

#include <conio.h>

void main (void)

fclose (Produse); }

else printf (' Fisier Absent'); getchar();

Intrari/Iesiri de siruri de caractere (FGetS, FPutS)

char fgets ( char s, int n, FILE Pf

unde:

à     s - zona receptoare (tablou de tip char de dimensiune £ n, terminat cu NUL

à     n - numar maxim de caractere (n-1),

Functia returneaza adresa sirului s, sau la EOF returneaza NULL

int fputs ( char s FILE Pf

Functia returneaza codul ultimului caracter scris sau -1 la eroare.

Urmatorul program inlocuieste cu­vin­tele din fisierul F_Niv_S.Cpp aflate in partea stanga a dictionarului Dictio.Txt cu cele co­res­punzatoare din partea dreapta, rezultatul fiind depus in fisierul F_Niv_S.Pas, asa cum se poate vedea in schema de mai jos.

Traduce Fisier text - String

#include <stdio.h> #include <conio.h>

#include <iostream.h> #include <process.h>

#include <string.h>

int Length(char* s)

int Pos(char* s, char* S)

if (Ok) return i; } return -1;

int Pos(char* s, char* S)

void Delete(char* s, int p, int n)

void Delete(char* s, int p, int n)

void Insert(char* s, char *S, int p)

void Insert(char* s, char *S, int p)

void Subst (char* x, char* y, char* S)

void main (void)

Per Dictio[20]; int NrCuv=1;

FILE *Dic; Dic=fopen('Dictio.Txt','r');

if (Dic==NULL)

while (EOF!=fscanf(Dic,'%s%s',Dictio[NrCuv].St,Dictio[NrCuv].Dr))

cout << NrCuv << ' : ' << Dictio[NrCuv ].St

<< ' -> ' << Dictio[NrCuv++].Dr << endl;

fclose(Dic); NrCuv--; getche();

FILE *FisI, *FisE;

FisI=fopen('F_Niv_S.Cpp','r'); FisE=fopen('F_Niv_S.Pas','w');

if (FisI==NULL)

const Dm=100; char Rand[Dm];

while (fgets(Rand,Dm,FisI))

fclose(FisI); fclose(FisE); getche();

Pozitionarea intr-un fisier (FSeek, FTell)

int    fseek FILE Pf, long deplasamnet, int origine

unde deplasamnet si origine au aceeasi semnificatie ca si la functia lseek.

Functia fseek returneaza 0 la pozitionare corecta sau o valoare ¹0 la eroare.

long    ftell FILE Pf )

Functia ftell returneaza pozitia curenta (fata de inceputul fisierului, in octeti).

Prelucrarea fisierelor binare (FRead, FWrite)

Acest tip de prelucrare permite transferul mai multor articole aflate intr-o zona tampon astfel:

unsigned fread (void Pzt, unsigned dim, unsigned nrart, FILE Pf

unde:

à     Pzt - este adresa zonei tampon,

à     dim - reprezinta lungimea unui articol,

à     nrart - reprezinta numarul de articole care se transfera (citesc),

unsigned fwrite (const void Pzt, unsigned dim, unsigned nrart, FILE Pf

Ambele functii returneaza numarul de articole transferate sau -1 la eroare.

Exemple:

#include <stdio.h>

typedef    struct Articol;

void main (void)

fclose (Pf); getchar();

fclose (Pf);



Document Info


Accesari: 728
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )