Documente Academic
Documente Profesional
Documente Cultură
2. Prelucrarea fiierelor
Lucrul 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 <fstream.h>.
Prelucrarea unui fiier se face prin mai multe operaii: declarare, deschidere (pentru citire sau scriere), citire,
scriere, nchidere. La nivel de program fiierul este recunoscut printr-o variabil asociat, numit identificator
de fiier (id_f).
ios::app
#include<fstream.h>
#include<stdlib.h>
void main()
{
char linie[80];
ifstream f("in.txt");
ofstream g("out.txt"); //se declara o variabil fisier
while(!f.eof())
{
f.getline(linie,80); //citete o linie din f
g<<linie<<endl;
//scrie linia n g
}
f.close();
g.close();
}
Exemplul 4: Citirea unui ir de n numere ntregi din fiier (n cunoscut) i afiarea lui pe ecran. Pe prima linie
din fiier este memorat valoarea lui n, iar pe urmtoarea linie sunt memorate cele n valori separate prin spaiu.
#include<fstream.h>
#include<stdlib.h>
void main()
{
int n, x,i;
ifstream f("in.txt");
f>>n; //citesc n din prima linie a fisierului
for(i=1;i<=n;i++)
{
f>>x;
// citesc pe rnd fiecare numr din fiier
cout<<x<<" ";
// afiez pe ecran numerele din fiier separate prin
spaii
}
f.close();
}
Exemplul 5: Citirea unui vector de n numere ntregi din fiier (n100) i afiarea lui pe ecran. Pe prima linie
din fiier este memorat valoarea lui n, iar pe urmtoarea linie sunt memorate cele n valori separate prin spaiu.
#include<fstream.h>
#include<stdlib.h>
void main()
{
int n, x[50],i;
ifstream f("in.txt");
f>>n; //citesc n din prima linie a fisierului
for(i=1;i<=n;i++)
{
f>>x[i];
// citesc pe rnd fiecare element al vectorului din fiier
cout<<x[i]<<" ";
// afiez pe ecran elementele vectorului separate
prin spaii
}
f.close();
}
Exemplul 6: Citirea unei matrici a cu m linii i n coloane din fiier (m,n20). Pe prima linie din fiier 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<fstream.h>
#include<stdlib.h>
void main()
{
int m,n,x[10][10],i,j;
ifstream f("in.txt");
f>>m>>n;
//citesc m i n din prima linie a fiierului
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
f>>x[i][j]; //citesc din fiier elementele fiecrei linii din
matrice
cout<<x[i][j]<<" "; //afiez elementele fiecrei linii din
matrice separate prin spaii
}
cout<<endl; //trec la linia urmtoare
}
f.close();
}
Exemplul 7: Scrierea elementelor unei matrici ptratice nxn de numere ntregi ntr-un fiier text, fiecare linie
din matrice se va scrie pe o linie din fiier, valorile fiind separate prin spaiu.
#include<fstream.h>
#include<stdlib.h>
void main()
{
int m,n,x[10][10],i,j;
ifstream f("in.txt");
ofstream g("out.txt");
f>>m>>n;
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
f>>x[i][j];
g<<x[i][j]<<" "; // scriu n fiier elementele fiecrei linii
din matrice separate prin spaii
}
g<<endl;
}
f.close();
}
Exemplul 8:
Se calculeaz produsul primelor n numere naturale. Numrul natural nenul n se citete din
fiierul date.in, iar produsul se va afia n fiierul date.out.
#include<fstream.h>
#include<stdlib.h>
void main()
{
unsigned n,i,p=1;
ifstream f("in.txt");
ofstream g("out.txt");
f>>n;
for(i=1;i<=n;i++)
p*=i;
g<<"produsul primelor "<<n<<" numere naturale este "<<p;
f.close(); }