RSS

Fisiere

14 Nov

Introducere

Asa cum stim deja, ca pe baza unor date de intrare, algoritmul (acum sub forma unui program C/C++) realizeaza calculele necesare si trebuie sa ne ofere niste date de iesire (rezultatele asteptate sau un mesaj lamuritor).

Date de intrare-> Program-> Date de iesire

Datele de intrare se introduc manual, de la tastatura si se afiseaza pe ecran (in consecinta, se pierd).

Folosirea fisierelor propune reutilizarea rezultatelor intre programe. Practic, datele de iesire ale unui program (rezultatele ) pot fi date de intrare pentru alt program. Din aceasta perspectiva, modelul ar trebui schimbat putin .

Fisier de intrare-> Program-> Fisier de iesire

Pentru a accesa fisierul de intrare sau de iesire avem nevoie de cate o variabila tip fisier. De asemenea trebuie specificat modul de acces la fisire (pentru citire sau afisare) si faptul ca fisierul trebuie sa fie deschis in vederea realizarii citirii/afisarii sau inchis.

OBS: Folosirea fisierelor presupune utilizarea bibliotecii FSTREAM. De aceea din codul dvs nu trebuie sa lipseasca, in sectiunea INCLUDE , urmatoarea linie:

#include <fstream>

Declararea variabilelor fisier.

ifstream fin(“date.in”);

  • s-a declarat o variabila pe nume  fin de tip ifstream (INPUT FILE STREAM – flux de date de intrare) si s-a asociat cu fisierul fizic date.in.

ofstream fout(“date.out”);

  • s-a declarat o variabila pe nume  fout de tip ofstream (OUTPUT FILE STREAM – flux de date de iesire) si s-a asociat cu fisierul fizic date.out.

OBS: Fisierele de date trebuie sa se gaseasca in acelasi folder cu fisierul CPP; daca fisierul de date se gaseste in alt folder, trebuie adaugata calea completa pana la fisier.

ifstream fin(“C:\Users\Mihai\Documents\date.in”);

Operatii de intrare/iesire

Citirea din fisier

  • fin>>var1>>var2;
  • se citesc rand pe rand valorile din fisier  si se atribuie variabilelor din lista;
  • se citesc in ordinea normala, ignorandu-se ideea de rand nou (ENTER), ca si cum datele ar curge (stream = flux …de date)

Scrierea in fisier

  • fout<<expr1<<expr2<<endl;
  • in fisier se afiseaza, in ordine, valorile expresiilor; constanta endl determina trecerea la rand nou in fisierul de iesire

Inchiderea fisierelor

Accesul la un fisiere se finalizeaza prin inchiderea fisierelor.

  • fin.close();
  • fout.close();

Exemplu: In fisierul DATE.IN se gasesc 2 valori inttregi. Sa se afiseze suma lor in fisierul DATE.OUT.

#include <fstream>
int a,b;
ifstream fin(“date.in”);
ofstream fout(date.out”);
int main ()
{
fin>>a>>b;
fout<<a+b;
fin.close();
fout.close();
return 0;
}
 
 

Tags:

10 responses to “Fisiere

  1. gleesik

    05/03/2015 at 23:25

    Sall profu eu sunt developer cu experienta si chiar ma uitam pe acest blog si imi place foarte mult. In acest articol aveti totusi o scapare fout>>expr1>>expr2>>endl; acest lucru nu este corect deoarece in c++, ar trebui sa fie fout<<expr1<<expr2<<endl;🙂

     
  2. mchelariu71

    06/03/2015 at 08:16

    Asa e. Multumesc. Evident, dormeam pe mine.😀

     
  3. Andrei

    24/02/2016 at 16:19

    Este normal ca sa dispara fisierele .in si .out dupa ce deschid a doua ora programul ? (c++, code blocks)

     
  4. Andrei

    24/02/2016 at 16:21

    Vreau raspuns urgent !

     
  5. mchelariu71

    25/02/2016 at 07:24

    nu

     
  6. Andrei

    25/02/2016 at 16:42

    In Notepad faceti fisierele…sau CPP ??

     
  7. Andrei

    25/02/2016 at 18:01

    Vreau sa merg la olimpiada de informatica, (clasa a 10a), si orice subiect trebuie da contina fisier .in si .out .
    Eu am faut fisierele in CPP, altii mai fac si in Notepad.
    Programul ruleaza perfect dar daca-l inchid, a doua ora cand il deschid imi apare doar programul principal, fisierele imi rama acolo unde le-am salvat.

    Nu ar trebui sa se deschida automat si fisierele in acelasi timp cu programul ???

    Astept raspuns si explicatie.

    MERSI !

     
  8. mchelariu71

    26/02/2016 at 08:39

    1. cand adaugisi salvezi fisierul, cauta la SAVE AS TYPE varianta ALL FILES. abia atunci scrie numefisier.in sau numefisier.out.
    2. altminteri, nu e un comportament normal. reinstaleaza. incearca CodeBlocks.

     
  9. mchelariu71

    26/02/2016 at 09:06

    fisierele In si OUT le faci in acelasi editor(al CODEBLOCKS-ului), cu observatia de mai sus

     
  10. Andrei

    26/02/2016 at 13:39

    Am reusit…Dumnezeu sa va binecuvinteze !!!

     

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: