Sunteți pe pagina 1din 15

08.10.

2017 Lucrul cu fisiere | WORLDIT

ACAS
DESPRE NOI
AUTORI
MRTURII
ARHIV
TRIMITE ARTICOL
CONTACT

Lumea n 1 i 0.

6
Shares

TIRI
TEHNIC
5
RECENZII
INTERVIURI
EVENIMENTE

FACEBOOK

Lucrul cu siere
WorldIT.info
PUBLICAT DE COSS N C/C++ 13 IUL, 2009 AT 6:08 PM 8 2,728 likes

Urmatorul articol prezinta diferite moduri in care


putem utiliza sierele. In loc sa citim datele unei Like Page Share

probleme de la tastura,le putem lua dintr-un


sier. In plus, lucrul cu siere este necesar in 1 friend likes this

rezolvarea problemelor de olimpiada, care au


date de intrare/iesire citite din sier.

Bitdefender O cial - Promoie 50 %. Cumpr Acum.


Protejeaz Datele Con deniale Precum i Dispozitivele Pe Care Le Foloseti! bitdefender.ro/Ofert/Limitat

Asadar,sa ne apucam de treaba:

Pentru a putea efectua diferite operatii cu si in


siere avem nevoie de biblioteca <fstream.h> .

1) Citirea din sier

http://www.worldit.info/articole/algoritmica-articole/lucrul-cu-fisiere/ 1/15
08.10.2017 Lucrul cu fisiere | WORLDIT

Sa spunem ca vrem sa citim dintr-un sier un


numar x. Fisierul se numeste nr.txt, trebuie sa-l
cream si sa introducem in el numarul x.

1 #include <iostream.h> ?
2 #include <fstream.h>
3 #include <conio.h>
4 int main()
5 {
6 ifstream f("nr.txt");
7 int x;
8 f>>x;
9 f.close();
10 cout<<"numarul citit din fisier e
11 getch();
12 return 0;
13 }

ULTIMELE ATACURI CIBERNETICE DIN


ROMANIA RO HACKED
Observati acel ifstream f(nr.txt); Putem spune ca
ifstream este instructiunea de citire din sier. www.degostila.ro | Sep 30, 2017
Forma generala este:
www.adriantodoran.ro | Sep 30, 2017
ifstream
variabila_ sier(nume sier.extensie); www.auto-az.ro | Sep 30, 2017

Variabia_ sier este in cazul nostru f. www.ivlog.ro | Sep 30, 2017

Fisierul: www.devilbiss-romania.ro | Sep 30, 2017

RO Hacked este registrul atacurilor cibernetice


din Romnia.

CAUT

Scrie i apas enter

ARTICOLE RECOMANDATE


Numr record de
participani la DefCamp
2015, cel mai important
eveniment dedicat
Va a sa cu ajutorul codului de mai sus: securitii cibernetice din
Europe Centrala si de Est
decembrie 2, 2015

http://www.worldit.info/articole/algoritmica-articole/lucrul-cu-fisiere/ 2/15
08.10.2017 Lucrul cu fisiere | WORLDIT

La DefCamp 2015 vei a a


prin ce tehnici pot evitate
msurile de securitate ale
sistemelor informatice
critice
octombrie 16, 2015

Ultima sansa sa rezervi


bilete de tip Early Bird la
DefCamp 2015
septembrie 1, 2015

15 sfaturi despre cum poti


deveni un programator bun
venite de la specialisti
romani
august 4, 2015
Observati ca ma inchis sierul cu f.close( ) . De
obicei, este bine sa inchidem sierele imediat ce
am terminat lucrul cu ele. OCTOMBRIE, 2017
Am putea declara sierele si asa: L MA MI J V S D

fstream f(nr.txt,ios::in); 1

2 3 4 5 6 7 8
Dar evaluatoarele gen infoarena nu prea accespta 9 10 11 12 13 14 15
acest tip de declarare. Desi este mai facil, eu
16 17 18 19 20 21 22
recomand folosirea primei variante (si mie imi
23 24 25 26 27 28 29
place mai mult cea cu ios:: , dar..).
30 31
Am utilizat ifstream pentru datele de intrate,sa
Dec
vedem cu sta treaba si cu datele de iesire:

2) Scrierea intr-un sier


LINK-URI SPONSORIZATE

Vrem sa citim un numar de la tastatura si sa-l


laptop second hand
bagam in sierul out.txt. Avem urmatorul cod:

1 #include <iostream.h> ?
Calculatoare Second Hand
2 #include <fstream.h>
3 int main()
4 { cod voucher pc garage
5 ofstream g("out.txt");
6 int n;
7 cout<<"Dati numarul: ";cin>>n;
8 g<<n;
9 g.close();
10 return 0;
11 }

http://www.worldit.info/articole/algoritmica-articole/lucrul-cu-fisiere/ 3/15
08.10.2017 Lucrul cu fisiere | WORLDIT

Forma este ofstream


variabila_ sier(nume.extensie); In cazul nostru,
variabila_ sier este g.

In sierul out.txt va aparea:

Putem scrie si cu :

fstream g(out.txt,ios::out);

Pentru a scrie in sier nu este nevoie sa-l


cream.Va creat automat.

http://www.worldit.info/articole/algoritmica-articole/lucrul-cu-fisiere/ 4/15
08.10.2017 Lucrul cu fisiere | WORLDIT

Acestea au fost principalele functii legate de


siere, sa vedem cum sta cu structurile de date:

3) Vectori si siere

Vom citi din sierul vect.in numarul de elemente


(care se a a pe prima linie),apoi elementele din
vector.Le vom a sa si apoi vom introduce in
sierul vect.out numai elementele.

1 include <iostream.h> ?
2 #include <fstream.h>
3 #include <conio.h>
4 int main()
5 {
6 ifstream f("vect.in");
7 ofstream g("vect.out");
8 int v[100],n,i;
9 f>>n;
10 for (i=0;i<n;i++)
11 f>>v[i];
12 f.close();
13 for (i=0;i<n;i++)
14 cout<<v[i]<<" ";
15 for (i=0;i<n;i++)
16 g<<v[i]<<" ";
17 g.close();
18 getch();
19 return 0;
20 }

Fisier de intarare:

http://www.worldit.info/articole/algoritmica-articole/lucrul-cu-fisiere/ 5/15
08.10.2017 Lucrul cu fisiere | WORLDIT

A sare:

Fisier de iesire:

http://www.worldit.info/articole/algoritmica-articole/lucrul-cu-fisiere/ 6/15
08.10.2017 Lucrul cu fisiere | WORLDIT

4) Matrice si siere

Vrem sa citim din sierul mat.in o matrice.Pe


prima linie se a a numarul de linii si numaurl de
coloane (exact in aceasta ordine), iar pe
urmatoarele m linii elementele matricei. Vom
a sa numarul de linii si coloane,precum si
elementele matricei.Apoi vom introduce numari
matricea in sierul mat.out.

1 #include <iostream.h> ?
2 #include <fstream.h>
3 #include <conio.h>
4 int main()
5 {
6 ifstream f("mat.in");
7 ofstream g("mat.out");
8 int a[10][10],i,j,m,n;
9 f>>m>>n;
10 for (i=0;i<m;i++)
11 for (j=0;j<n;j++)
12 f>>a[i][j];
13 f.close();
14 cout<<"nr de linii: "<<m<<endl;
15 cout<<"nr de coloane: "<<n<<endl;
16 for (i=0;i<m;i++)
17 {
18 for (j=0;j<n;j++)
19 {
20 cout<<a[i][j]<<" ";
21 }
22 cout<<endl;
23 }
24 for (i=0;i<m;i++)
25 {
26 for (j=0;j<n;j++)
http://www.worldit.info/articole/algoritmica-articole/lucrul-cu-fisiere/ 7/15
08.10.2017 Lucrul cu fisiere | WORLDIT

27 {
28 g<<a[i][j]<<" ";
29 }
30 g<<endl;
31 }
32 g.close();
33 getch();
34 return 0;
35 }

Fisier de intarare:

A sare:

http://www.worldit.info/articole/algoritmica-articole/lucrul-cu-fisiere/ 8/15
08.10.2017 Lucrul cu fisiere | WORLDIT

Fisier de iesire:

5) Struct si siere

Vom citi din sierul copil.in numarul de copii (pe


prima linie,n), numele,prenumele,varsta,clasa si
vom a sa numele celui mai mic copil.

1 #include <iostream.h> ?
2 #include <stdio.h>
3 #include <conio.h>
4 #include <fstream.h>
5 int main()
6 {
7 ifstream f("copil.in");
8 struct copil
9 {
10 char nume[10],prenume[10];
11 int varsta,clasa;
12 }e[3];
13 int i,min,k,n;
14 f>>n;
15 for (i=0;i<n;i++)
16 f>>e[i].nume>>e[i].prenume>>e[i].
17
18 f.close();
19 min = e[0].varsta;
20 for (i=1;i<3;i++)
21 if (e[i].varsta<min) min=e[i].var
22 cout<<"min="<<min<<endl;
23 for (i=0;i<3;i++)
24 if (min==e[i].varsta) cout<<"Cel
25 getch();
26 return 0;
27 }

http://www.worldit.info/articole/algoritmica-articole/lucrul-cu-fisiere/ 9/15
08.10.2017 Lucrul cu fisiere | WORLDIT

Fisier intrare:

A sare:

Ca Tema , va propun rezolvarea unei probleme


simple, de pe infoarena. Este necesar sa
cunoasteti siere.

Cam asta este cu sierele, totul este scris pe


scurt. If you like it, tell me.

http://www.worldit.info/articole/algoritmica-articole/lucrul-cu-fisiere/ 10/15
08.10.2017 Lucrul cu fisiere | WORLDIT

Daca acest articol contine o greseala, selecteaza


cuvintele sau fraza gresita si tasteaza combinatia
de taste Shift + Enter sau apasa click aici pentru
a o raporta. Multumim!

Etichete: a sare C++ date iesire/intrare les

siere matrice program strucut

vectori

Albulescu Cosmina a scris 223


articole
Nu exist o descriere a autorului.

ARTICOLUL ARTICOLUL
ANTERIOR URMTOR
Noul telefon Pisica robot
Toshiba

8 COMENTARII
Avadanei Andrei
Destul de dragut.Ca o completare as
putea spune faptul ca in general eu nu
folosesc aceasta metoda pentru lucrul
cu siere.Poate unii dintre voi au
observat ca folosesc in probleme
freopen.

Cum lucreaza?

freopen( sier.in,r,stdin); // sier


intrare
freopen( sier.out,w,stdout); // sier
iesire

http://www.worldit.info/articole/algoritmica-articole/lucrul-cu-fisiere/ 11/15
08.10.2017 Lucrul cu fisiere | WORLDIT

scanf(%d,&i); //citim o valoare de tip


int
scanf(%lld,&l); //citim o valoare long
long int
scanf(%c,&c); //citim un caracter
scanf(%s,s); //citim un sir de caractere
pana intalnim spatiu sau sfarsit de linie

printf(%d,i); //a sam valoare de tip int


printf(%lld,l); //a sam valoare de tip
long long int
printf(%c,c); //a sam caracter
printf(%s,s); //a sam text

fclose(stdout); fclose(stdin); // inchidem


resursele

Pentru a citi mai multe variabile


facem astfel :

scanf(%d%lld%s,&i,&l,&s); //citim o
variabila de tip int,una de tip long long
int si una de tip sir de caractere

Formatare text :

printf(%s are : %d ani\n,nume,ani);


//am a sat un sir de caractere si o
variabila de tip int

IULIE 13, 2009 LA 11:39 PM


RSPUNDE

miculprogramator
Asta-i varianta de C. Eu prefer sa lucrez
in C numai cu stringurile, in rest C++.
Mi se pare mi usor

IULIE 14, 2009 LA 9:14 AM


RSPUNDE

~Selony~
Foarte fain.Good Work

IULIE 14, 2009 LA 10:18 AM


RSPUNDE

Avadanei Andrei
Gusturile nu se discuta.Si eu prefer C++
in anumite situatii insa exista zvonuri
cum ca aceasta metoda ar ceva mai
rapida in anumite situatii.

http://www.worldit.info/articole/algoritmica-articole/lucrul-cu-fisiere/ 12/15
08.10.2017 Lucrul cu fisiere | WORLDIT

Am intampinat si cateva probleme pe


infoarena care schimband metoda de
citire/scriere luam maxim sau
pierdeam multe puncte.
E bine sa le stii pe ambele si sa lucrezi
cu ambele probleme pentru a vedea
care ofera mai multe rezultate pozitive

IULIE 14, 2009 LA 1:34 PM


RSPUNDE

Andrei Misarca
Din ceea ce am vazut si experimentat
eu, citirea e mai rapida cu streamuri,
insa a sarea este mult mai inceata.
Asta insa doar pe versiunile mai noi de
compilatoare GNU (de la 4.2 in sus). Pe
.campion de exemplu unde se
foloseste o versiune mai veche (3.2
cred) folosirea streamurilor este
contraindicata.
Daca primesc ceva permisiuni m-as
baga si eu la dezvoltarea siteului, ideea
mi se pare faina.

IULIE 14, 2009 LA 11:16 PM


RSPUNDE

Avadanei Andrei
Vorbim pe Y! Messenger. Just Click

IULIE 15, 2009 LA 12:01 AM


RSPUNDE

adrian
ai o greseala in ultimul program .. min
este negativ pt ca nu il initializezi
inainte si este intotdeauna mai mic
decat oricare e[i].varsta si da ceva
aiurea la iesire .. cred ca ar trebui min =
e[0].varsta; inainte de for. bafta

AUGUST 27, 2009 LA 8:03 PM


RSPUNDE

Avadanei Andrei
Mersi Adrian pentru
observatie.
http://www.worldit.info/articole/algoritmica-articole/lucrul-cu-fisiere/ 13/15
08.10.2017 Lucrul cu fisiere | WORLDIT

AUGUST 27, 2009 LA 8:53 PM


RSPUNDE

LAS UN RSPUNS
Comentariu

bilink href=""b-quotecode ;-):|:x:twisted:

:smile::shock::sad::roll::razz::oops::o
:lol::idea::grin::evil::cry::cool::arrow::???::?::!:?
Preview

Nume * Email *

Sit web

Public comentariul

Tehnic C/C++ Lucrul cu siere


IMPORTANT PRIETENI PRIETENI

Bit Sentinel BetiT.ro PC Con g

bijuterii handmade RO Hacked

http://www.worldit.info/articole/algoritmica-articole/lucrul-cu-fisiere/ 14/15
08.10.2017 Lucrul cu fisiere | WORLDIT

Centrul de Cercetare n Computerica | Resurse Stiri IT


Securitate Informatic din gratuite PC
Romnia
Descopera.org
DefCamp
Gadgeturi si IT Giz.ro

Copyright 2009-2014 WORLDIT. Toate drepturile Rezervate.


Termeni i condiii | Contact | Licena Creative Commons

http://www.worldit.info/articole/algoritmica-articole/lucrul-cu-fisiere/ 15/15

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