Sunteți pe pagina 1din 7

Fisier text

Un fișier text este un tip de fișier în care datele sunt stocate ca o secvență de caractere, într-o
codificare predefinită. Este un tip canonic de fișier unde datele sunt stocate ca "secvențe de biți"
(binar). Nu orice fișier binar este un fișier text. Prin definire, un fișier text este codificat unitar,
conținutul său fiind lizibil și editabil direct, prin intermediul unui editor simplu de text (Notepad, vi,
emacs, gedit etc.).

Un fişier este o colecţie de date indicat printr-un nume şi o extensie. Numele este desparţit
de extensie prin punct.
Afisarea in fisier 

Se face la fel ca si afisarea pe ecran numai ca metoda cout se inlocuieste cu numele


variabilei de acces la fisier.

Avantajul lucrului cu fisiere este evident, datele rezultate în urma execuţiei unui program
putând fi salvate.
Pentru lucrul cu fişiere text in C++ se adaugă o bibliotecă standard si anume
<fstream.h>. Această bibliotecă lucrează cu fluxuri (stream-uri) :
ifstream – flux de intrare
ofstream – flux de iesire
fstream – are ambele caracteristici (ifstream si ofstream)
Opreaţiile care se efectuează, în general, cu fisiere text sunt:
- deschidrea unui fisier text
- închiderea unui fisier text
- citirea datelor dintr-un fisier text
- scrierea datelor intr-un fisier text
- adăugarea datelor într-un fişier text
Pentru o mai bună înţelegere ne propunem să exemplificăm rezolvarea următoarei
situaţii: Fie fişierul text fis.in în care sunt scrise numere pe mai multe rânduri. Se cere:
- citirea datelor din fişierul text într-un vector si afişarea lor
- scrirea datelor citite in fisierul text fis.out;
- adăugarea datelor citite anterior in acelaşi fişier fis.out
Pentru aceasta vom parcurge următoarele etape:
I. DESCHIDEREA UNUI FISIER TEXT
Pentru a putea efectua operaţii cu un fişier text acesta trebuie mai intâi deschis.
Astfel se pot folosi unul din obiectele ifstream(pentru citire) sau ofstrem(pentru
scriere) din/în fisier.
ifstream f("fis.in"); //s-a deschis fisierul pentru citire SAU
fstream f("fis.in",ios::in);
ofstream f("fis.in"); //s-a deschis fisierul pentru scriere SAU
fstream f("fis.in",ios::out);
fstream f("fis.in",ios::app); // s-a deschis fisierul pentru adăugare

II. ÎNCHIDEREA UNUI FISIER TEXT


Se realizează cu ajutolul funcţiei:
f.close();
III. CITIREA DATELOR DINTR-UN FISIER TEXT
Vom folosi astfel următoarea secvenţă de program:
#include<iostream.h>
#include<fstream.h>
void main()
{
clrscr();
int v[100],i=0,j=0,n;
fstream f("fis.in", ios::in); //s-a deschis fisierul pentru citire
//o altă varianta ar fi fost: ifstream f("fis.in");
while(!f.eof()) // cât timp nu s-a ajuns la sfârşitul fisierului text
{
i++;
f>>v[i]; //se citeste din fisier caracter cu caracter
j++;
}
for(i=1;i<j;i++)
cout<<v[i]<<" "; // se afişează fiecare element din vector
f.close(); // se închide fisierul
getche();
}

IV. SCRIEREA DATELOR INTR-UN FISIER TEXT


Fisierul în care dorim să scriem textul va fi suprascrie la fiecare execuţie a
programului. Secvenţa de program este următoarea:
#include<iostream.h>
#include<fstream.h>
void main()
{
clrscr();
int v[100],i=0,j=0,n;
fstream f("fis.in", ios::out); //s-a deschis fisierul pentru scriere
//o altă varianta ar fi fost: ofstream g("fis.out");
for(i=1;i<j;i++)
g<<v[i]; // se scrie din vector in fişier
g.close(); // se închide fisierul
getche();
}

V. ADĂUGAREA DATELOR ÎNTR-UN FIŞIER TEXT


Secvenţa de program este următoarea:
#include<iostream.h>
#include<fstream.h>

VI. CITIREA DIN FISIER LINIE CU LINIE


#include <iostream>
#include <fstream>
using namespace std;
int main ()
{
char linie[100];
fstream f("fis.in",ios::in);
while(f.get(linie,100))
{
cout<<linie<<endl;
f.get();
}
return 0;
}

Afisarea in fisier 

Se face la fel ca si afisarea pe ecran numai ca metoda cout se inlocuieste cu numele


variabilei de acces la fisier.
VII. CITIREA SI SCRIEREA CARACTERELOR DIN/INTR-UN FISIER
//dintr-un fisier text se citeste o fraza. sa se afiseze in alt fisier frazas scr cu
majuscule.s
#include<iostream>
#include<fstream>
#include<conio.h>
#include <string.h>
using namespace std;
int main()
{
int i=0;
char a[100];
int i=0;
fstream f("fis.in",ios::in);
fstream g("fis.out",ios::out);
f.get(a,99);
strupr(a);
g<<a;
getch();
return 0;
}

Exercitii rezolvate:
1.De la intrarea standard se citesc trei valori reale x,y si z.Sa se scrie un program,pentru
afisarea,pe ecran,a valorilor urmatoarelor expresii:
A=5x+3B-21y+4z ; B=C-3x+5y-45z ; C=12x+1/2y+2-(z*z+27)
#include <iostream>
using namespace std;
int.main ()
{
float x,y,z,A,B,C;
cout <<”x=”;
cin >>x;
cout <<”y”;
cin >>y;
cout <<”z”;
cin >>z;
C=(12*x+1)/(pow(y,2)+2)-sqrt (pow(z,2)+27);
B=C-3*x+5*y-45*z;
A=5*x+3*B-21*y+ pow(z,4);
cout <<”A=” << A << endl;
cout <<”B=” << B << endl;
cout <<”C=” << C;
return 0;
}

2.Se considera doua masuri de unghiuri exprimate in grade,minute


si,respective,secunde:g1,m1,s1,g2,m2,s2.Sa se calculeze si sa se afiseze suma masurilor
celor doua unghiuri,exprimata tot in grade,minute,respective,secinde.Datele de intrare se
citesc din fisierul text unghi.in (informatiile fiecarui unghi sunt citite de pe linii
distincte,valorile fiind separate printr un spatiu).Masura unghiului suma se va afisa in fisier
unghi.out.
#include <iostream>
using namespace std;
ifstream f(“unghi.in”);
ofstream h(“unghi.out”);
int.main ()
{
int g1,m1,s1,g2,m2,s2,g,m,s;
f >>g1>>m1>>s1>>g2>>m2>>s2;
s=s1+s2;
g=g1+g2;
m=m1+m2;
if (s>=60)
{
s=s-60;
m=m+1;
}
if (m>=60);
{
m=m-60;
g=g+1;
}
h<<g<<” “<<m<<” “<<s<<” “<<endl;
f.close ();h.close ();
return 0;
}

S-ar putea să vă placă și