Scrigroup - Documente si articole

     

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


Fisiere - Functii de citire/scriere in fisier

c



+ Font mai mare | - Font mai mic



Fisiere

Nivelul standard de accesare al fisierelor este controlat de o structura FILE, care pastreaza informatii privitoare la fisierul prelucrat cum ar fi:

identificatorul de fisier (un cod numeric unic in sistem la un moment dat ce permite gasirea rapida a acelui fisier)



drepturi de acces la fisier (de scriere, citire, modificare, stergere)

localizarea fizica a fisierului (calea completa catre fisier)

indicator al pozitiei curente in fisier

Deschiderea fisierelor pentru prelucrare:

FILE * fopen(char* specificator_fisier,char* tip_acces);

Specificatorul de fisier este un pointer la un sir de caractere care reprezinta numele de fisier si calea completa.

Exemplu:

"c:director1director2fisier.txt"-atentie la caracterul care trebuie sa fie dublu.

Tip_acces reprezinta tipul de acces la fisierul pe care incerc sa-l deschid cu functia fopen. Acesta poate fi:

"r" - fisierul este deschis doar pentru citire

"w" -fisierul este deschis pentru scriere, daca fisierul nu exista este creat.

"a" - fisier deschis pentru modificare, daca fisier nu exista este creat, daca exista cursorul de scriere este pozitionat la sfirsitul fisierului.

"r+"- fisierul este deschis atit pentru citire cit si pentru scriere

"w+"

"a+"

functia fopen:

- aloca dinamic o structura de tip FILE, populeaza cimpurile structurii cu informatiile efective si returneaza un pointer la aceasta structura daca deschiderea fisier s-a facut cu succes sau NULL in caz de eroare.

Exemplu:

FILE* fis;

fis=fopen("c:f404exemplu.dat","r");

if(fis==NULL)

cout<<"Fisierul nu a putut fi deschis pentru citire";

//instructiuni de prelucrare a fisierului

void fclose(fis); //fisierul este inchis

functia fclose() cu antetul:

void fclose(FILE*)

elibereaza memoria alocata structurii de tip FILE alocata de functia fopen() si nu mai permite accesul la respectivul fisier.

Functii de citire/scriere in fisier

a)      int fwrite(void * ptr, int dim, int nr, FILE* pf);

ptr =pointer fara tip reprezinta adresa de inceput a zonei de memorie in care se gaseste informatia pe care urmeaza sa o scriu in fisier .

dim =dimensiunea unei componente de la acea adresa pe care o scriu in fisier (dimensiune pe care o determin cu operatorul sizeof()).

nr =numarul de componente pe care le scriu in fisier de la adresa respectiva de memorie.

pf =pointer catre o structura de tip FILE ale carei cimpuri au fost populate la deschiderea fisierului pentru scriere.

functia intoarce numarul de componente efectiv scrise in fisier.

b)      int fread(void * ptr, int dim, int nr, FILE* pf);

ptr =adresa de inceput a zonei de memorie in care se va pastra informatia citita din fisier.

dim =dimensiunea unei componente citite din fisier

nr =numarul de componente care urmeaza sa fie citite din fisier

pf =pointerul catre structura FILE care contine informatiile despre fisierul din care se citeste.

functia returneaza numarul de componente efectiv citite din fisier

Exemplu:


fie structura:
struct pers

- programul deschide fisierul exemplu.dat si scrie in acesta 25 de elemente de tip pers, apoi incearca sa citeasca cele 25 de elemente din fisier si afiseaza numarul persoanelor citite si numarul persoanelor efective.


#include <stdio.h>
void main( void )

else
printf( "Fisierul nu a putut fi deschisn" );

if( (pf = fopen( "exemplu.dat", "r+" )) != NULL )

else
printf( "Fisierul nu a putut fi deschisn" );


se afiseaza

numarul de persoane scrise in fisier 25
Numarul de persoane citite = 25
Persoanele citite din fisier = ...

Functii de scriere/citire fisiere specifice pentru caractere

a)      char fgetc(FILE* pf);

pf =pointer catre structura care contine informatiile despre fisierul din care citesc (acesta trebuie sa fie deschis inainte de a incerca sa citesc).

functia citeste un caracter din fisierul specificat din pozitia curenta in fisier.

b)      int fputc(char c, FILE* pf );

c =caracterul care urmeaza sa fie scris in fisier

pf =pointer catre structura de tip FILE care contine informatiile despre fisier.

functia scrie un caracter in fisierul respectiv la pozitia curenta in fisier cele doua functii sint folosite pentru prelucrarea fisierelor byte cu byte.

Functii de scriere/citire fisiere cu format

sint functii similare cu scanf rspectiv printf, diferenta intre ele fiind ca functiile pentru fisiere au ca prim parametru un pointer catre o structura FILE .

a)      int fscanf(FILE* pf, const char* format, .);

pf =pointer catre o structura de tip FILE care a fost initializata de functia fopen.

ceilalti parametri sint identici cu cei ai functiei scanf.

citeste date dintr-un fisier si le converteste in conformitate cu parametrii de la apelul functiei.

b)      int fprintf(FILE* pf, const char* format, .);

pf =pointer catre o structura FILE

ceilalti parametrii sint la fel ca la functia printf.

functia converteste datele din format intern in format expern si apoi le scrie in fisier.

Functiile returneaza -1 in caz de eroare sau numarul caracterelor citite respectiv scrise in fisier.

Functii scriere/citire fisiere pentru siruri

functii care permit scrierea respectiv citirea inregistrarilor din fisiere care sint siruri de caractere.

a)char* fgets(char* sir,int nr, FILE* pf);

citeste dintr-un fisier un sir de caractere.

sir =pointer catre zona de memorie in care se pastreaza sirul de caractere citit din fisier.

nr =dimensiunea in octeti a zonei in care se citesc caracterele din fisier

la un apel al lui fgets se citesc cel mult n-1 caractere.

pf =pointerul catre structura cu informatii despre fisierul din care se face citirea.

citirea caracterelor se intrerupe la intilnirea caracterului 'n' daca acesta a fost citit din fisier sau dupa citirea a cel mult n-1 caractere.

in zona de memorie catre care pointeaza sir se pastreaza caracterul 'n' daca acesta a fost citit din fisier iar apoi se memoreaza caracterul nul ('0').

Functia returneaza adresa zonei de memorie in care se pastreaza sirul citit din fisier, la intilnirea sfirsitului de fisier functia returneaza zero

b)int fputs(const char* sir, FILE * pf);

functia scrie un sir de caractere intr-un fisier.

sir =pointer catre sirul de caractere care urmeaza sa fie scris in fisier.

pf =pointer catre structura cu informatii despre fisierul in care urmeaza sa se faca scrierea.

functia returneaza codul ASCII al ultimului caracter scris in fisier sau -1 in caz de eroare.

Functii pentru pozitionarea intr-un fisier

a)      int fseek( FILE* pf, long deplasare, int origine);

functia permite pozitionarea capului de citire/scriere al discului pentru a putea prelucra intr-o ordine diferita de cea secventiala a fisierului.

pf =pointer catre structura in care se pastreaza informatii despre fisierul in care se face pozitionarea indicatorului de citire/scriere in fisier.

deplasare =numarul de octeti cu care se face deplasarea in fisier;

origine =punctul fata de care se face deplasarea, poate fi definit cu ajutorul constantelor:

SEEK_SET - inceput de fisier;

SEEK_END - sfirsit de fisier;

SEEK_CUR - pozitia curenta in fisier.

functia returneaza valoarea zero in cazul pozitionarii corecte sau o valoare diferita de zero in caz de eroare.

b)      long ftell(FILE* pf);

functia returneaza o valoare care defineste pozitia curenta a indicatorului de citire/scriere in fisier fata de inceputul de fisier.

permite cunoasterea pozitiei curente a indicatorului de citire/scriere la un moment dat pentru un fisier deschis.

Functie pentru stergerea unui fisier

int unlink(conast char* calea);

permite stergerea unui fisier

calea =pointer catre un sir de caractere care contine calea completa catre fisierul care urmeaza sa fie sters.

returneaza zero in caz de reusita si -1 in caz de eroare.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2197
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