Documente Academic
Documente Profesional
Documente Cultură
!. "relucrarea fiierelor
&ucrul cu fisiere se face prin intermediul clasei ifstream pentru citire respectiv ofstream pentru scriere. Pentru a le utiliza, aplicatiile trebuie sa includa biblioteca de funcii 3fstream.#$. Prelucrarea unui fi ier se face prin mai multe operaii" declarare% desc#idere (pentru citire sau scriere), citire% scriere% nc#idere. &a nivel de program fi ierul este recunoscut printr-o variabil asociat, numit identificator de fiier &id'f(.
(append) !esc2idere pentru adugare la sfr it de fi ier6 fi ierul trebuie s existe. (truncate) !ac fi ierul desc2is pentru operaii de scriere exist deja, coninutul lui anterior este ios""trunc ters i nlocuit cu cel nou. ios""nocreate Fi ierul desc2is trebuie s existe (el nu poate fi creat). ios""noreplace Fi ierul este desc2is, iar coninutul lui nu poate fi nlocuit. +itirea din fi iere text se face astfel" id'f$$v1,$$v!$$...$$vn-. unde v4, v/,....vn sunt identificatori de variabile elementare de orice tip. Pentru citirea unui caracter din fi ier se folose te" id'f.get&c(. unde c este o variabil de tip caracter n care se va memora caracterul citit din fi ier. Pentru citirea unui ir de caractere de pe o linie din fi ier se folose te" id'f.getline&s% nr(. unde s este o variabil de tip tablou n care se vor memora caracterele citite din fi ier, iar nr este lungimea irului de caractere. /crierea n fi iere text se face astfel" id'f00v1,00v!00...00vn-. unde v4, v/,....vn sunt identificatori de variabile elementare de orice tip sau de constante. Pentru scrierea unui caracter ntr-un fi ier se poate folosi i sintaxa" id'f.put&c(. unde c este o variabil de tip caracter al crei coninut se va scrie n fi ier.
!.1.
+e face cu secvena" if(!id_f.is_open()) { cout<<fisierul nu poate fi deschis pentru scriere; exit(1); } #n caz de succes, funcia id_f.is_open() returneaz un pointer la noul flux de comunicare desc2is (o valoare nenul)6 altfel returneaz valoarea nul.
!.3.
!.5.
Pentru a verifica dac poziia curent de citire$scriere a ajuns la sfr itul unui fi ier se folose te funcia id_f.eof(),care ntoarce valoarea ; dac poziia curent nu este la sfr itul fi ierului i o valoare diferit de ; dac poziia actual indic sfr itul de fi ier.
Informatica clasa a X-a if(!$.is_open()) //ntoarce pointer nul { cout<<% fisierul nu poate fi deschis pentru scriere %; exit(1); } // se copie cte un caracter din sursa si se scrie // in destinatie f.$et(c); &hile(!f.eof()) { $.put(c); f.$et(c);} f.close(); $.close(); // se nchid fiierele deschise } Exemplul 2: +e numr cte caractere de fiecare tip (litere, cifre i neafi abile) sunt ntr-un fi ier text. #include<fstrea .h! #include<stdli".h! #include<ct'pe.h! #oid ain() { int l,c,$; char ch; l(c($(); ifstrea f(in.txt); //se declara o variabil fisier // se incearca deschiderea fisierului if(!f.is_open()) //ntoarce pointer nul { cout<<% fisierul nu poate fi deschis pentru citire %; exit(1); } do{ f.$et(ch); //citete un caracter din fiier if(isalpha(ch)) l**; // caracterul este o litera if(isdi$it(ch)) c**; // caracterul este o cifra if(!isprint(ch)) $**; // caracterul nu este afisabil }&hile(!f.eof()); //pn se ntlnete EOF cout<<+n nu arul de litere este <<l; cout<<+n nu arul de cifre este <<c; cout<<+n nu arul de caractere neafisa"il este <<$; f.close(); *opierea unui fi ier text n altul, linie cu linie.
} Exemplul 3:
#include<fstrea .h! #include<stdli".h! #oid ain() { char linie,-).; ifstrea f(%in.txt%); ofstrea $(%out.txt"); //se declara o variabil fisier // se verific deschiderea fisierului surs if(!f.is_open()) //ntoarce pointer nul { cout<<% fisierul nu poate fi deschis pentru citire %; exit(1); } // se verific deschiderea fisierului destinatie if(!$.is_open()) //ntoarce pointer nul { cout<<% fisierul nu poate fi deschis pentru scriere %;
Informatica clasa a X-a exit(1); } &hile(!f.eof()) { f.$etline(linie,-)); //citete o linie din f $<<linie<<endl; //scrie linia n } f.close(); $.close(); }
Exemplul : *itirea unui ir de n numere ntregi din fi ier (n cunoscut) i afi area lui pe ecran. Pe prima linie din fi ier este memorat valoarea lui n, iar pe urmtoarea linie sunt memorate cele n valori separate prin spaiu. #include<fstrea .h! #include<stdli".h! #oid ain() { int n, x,i; ifstrea f(%in.txt%); f!!n; //citesc n din pri!a linie a fisierului for(i(1;i<(n;i**) { f!!x; // citesc pe rnd fiecare nu!r din fiier cout<<x<<% %; // afie" pe ecran nu!erele din fiier separate prin spa#ii } f.close(); } Exemplul !: *itirea unui vector de n numere ntregi din fi ier (n8199) i afi area lui pe ecran. Pe prima linie din fi ier este memorat valoarea lui n, iar pe urmtoarea linie sunt memorate cele n valori separate prin spaiu. #include<fstrea .h! #include<stdli".h! #oid ain() { int n, x,/).,i; ifstrea f(%in.txt%); f!!n; //citesc n din pri!a linie a fisierului for(i(1;i<(n;i**) { f!!x,i.; // citesc pe rnd fiecare ele!ent al vectorului din fiier cout<<x,i.<<% %; // afie" pe ecran ele!entele vectorului separate prin spa#ii } f.close(); } Exemplul ": *itirea unei matrici a cu m linii i n coloane din fi ier ( m%n8!9). Pe prima linie din fi ier se gsesc valorile m i n separate prin spaiu. Pe urmtoarele m linii se gsesc cte n valori separate prin spaiu reprezentnd elementele matricii. #include<fstrea .h! #include<stdli".h! #oid ain() { int ,n,x,1).,1).,i,0; ifstrea f(%in.txt%); f!! !!n; //citesc ! i n din pri!a linie a fiierului for(i(1;i<( ;i**) { for(0(1;0<(n;0**) { f!!x,i.,0.; //citesc din fiier ele!entele fiecrei linii din
Informatica clasa a X-a !atrice cout<<x,i.,0.<<% %; //afie" ele!entele fiecrei linii din !atrice separate prin spa#ii } cout<<endl; //trec la linia ur!toare } f.close(); }
Exemplul #: +crierea elementelor unei matrici ptratice nxn de numere ntregi ntr-un fi ier text, fiecare linie din matrice se va scrie pe o linie din fi ier, valorile fiind separate prin spaiu. #include<fstrea .h! #include<stdli".h! #oid ain() { int ,n,x,1).,1).,i,0; ifstrea f(%in.txt%); ofstrea $(%out.txt%); f!! !!n; for(i(1;i<( ;i**) { for(0(1;0<(n;0**) { f!!x,i.,0.; $<<x,i.,0.<<% %; // scriu n fiier ele!entele fiecrei linii din !atrice separate prin spa#ii } $<<endl; } f.close(); } Exemplul $: +e calculeaz produsul primelor n numere naturale. <umrul natural nenul n se cite te din fi ierul date.in, iar produsul se va afi a n fi ierul date.out. #include<fstrea .h! #include<stdli".h! #oid ain() { unsi$ned n,i,p(1; ifstrea f(%in.txt%); ofstrea $(%out.txt%); f!!n; for(i(1;i<(n;i**) p1(i; $<<%produsul pri elor %<<n<<% nu ere naturale este %<<p; f.close(); }