Citirea si afisarea cu ajutorul fisierelor C++

Citirea normala, cu ajutorul functiei cin, necesita ca datele de intrare sa fie introduse prin intermediul tastaturii, la rularea programului. Unele probleme, insa, doresc implementarea citirii cu ajutorul unui fisier extern. Pentru a realiza acest lucru trebuie folosita o variabila care va functiona similar cu functia cin, pe parcursul programului. Astfel, inainte de inceperea citirii trebuie deschis fisierul din care vrem sa citim si atribuit unei variabile de citire. Acest lucru se realizeaza cu structura ifstream.

Observatie!! Pentru a citi/afisa cu ajutorul fisierelor la inceputul programului trebuie inclusa biblioteca fstream. (#include <fstream>).

Structura operatiei de deschidere: ifstream numeVariabilaCitire(“numeFisier”);

Deschidere fisier de citire:

Dupa ce a fost deschis fisierul, putem folosi variabila prin care l-am deschis pentru a citi din acesta.

Structura operatie de citire : numeVariabilaCitire>> (similara functiei cin)

Exemplu de citire din fisier:

Afisarea intr-un fisier se face in mod asemanator functiei cout printr-o variabila de afisare. Inainte de efectuarea afisarii, trebuie mai intai deschis fisierul in care vrem sa afisam si atribuit unei variabile de afisare. Acest lucru se realizeaza cu structura ofstream.

Structura operatiei de afisare : ofstream numeVariabilaAfisare(“numeFisier”);

Deschidere fisier de afisare:

Dupa ce a fost deschis fisierul, putem folosi variabila prin care l-am deschis pentru a afisa in acesta.

Structura operatiei de afisare:  numeVariabilaAfisare<< (similara functiei cout)

Exemplu afisare in fisier:

Intr-un program se pot combina cele doua procese si putem citi dintr-un fisier si sa afisam in altul.

Exemplu de problema in care folosim citirea si afisarea din fisiere:

Sa se afiseze in fiserul ‘paritate.txt’, toate numerele pare din fisierul ‘input.txt’.Fisierul ‘input.txt’ contine numere intregi separate prin spatiu. Numerele trebuie afisate pe linii diferite.

Am deschis cele doua fisiere externe necesare(ifstream si ofstream). Dupa care, am citit din fisier (f>>a) numere, pana cand am ajuns la sfarsitul acestuia (while (f>>a) se opreste cand ajungem la sfarsitul fiserului retinut in f).Daca numarul citit este par il afisam in fisierul retinut in g (g<<a).

Spor la lucru! Daca aveti intrebari nu ezitati sa le lasati in comentarii, va vom raspunde cat de repede putem 🙂

23 Replies to “Citirea si afisarea cu ajutorul fisierelor C++”

  1. Pe cand un site si cu probleme rezolvate in C?

    Reply

    1. Noi inca suntem la inceput. Vom discuta pe viitor o eventuala extindere. Multumim de comment!

      Reply

  2. Salutare, felicitări şi mulţumiri echipei care a realizat acest sait.
    Este extrem de util!
    O rugăminte: cînd mai aveţi ceva timp, vă rog să postaţi cîteva exemple de lucru cu rutine (subrutine, metode) şi să explicaţi ce înseamnă transferul parametrilor prin valoare, prin referinţă etc.

    Reply

    1. Salutare! Intrucat ne axam pe informatica de liceu din pacate nu o sa postam nimic legat de metode. Notiuni legate de subprograme poti gasi aici. O sa postam cat de curand exemple de probleme ce folosesc functii cu parametri prin referinta. Spor la lucru si multumim de comentariu 🙂

      Reply

  3. Bun continut! Felicitari echipei, sper la o dezvoltare buna si la mai multe proiecte utile!

    Reply

  4. Ce faceti joi de la 10?

    Reply

    1. Ma joc cu baietii

      Reply

  5. cum pot citi din fisier cuvant cu cuvant pana la spatiu si nu caracter cu caracter?

    Reply

    1. Salut Adi. Nu inteleg exact la ce te referi. Daca vrei sa citesti cuvant cu cuvant, terminatorul nu ar putea sa fie spatiu, pentru ca programul nu ar sti cand sa se opreasca. Ca sa citesti cuvant cu cuvant, trebuie sa te opresti la sfarsitul fisierului ( altfel ar trebui sa fie litera cu litera ). Programul ar fi ceva de genul: char c[100]; while (f >> c) { //in variabila c o sa ai cuvintele.aici scrii ce faci cu cuvintele }

      Reply

  6. Buna!
    Am un fisier cu un sir luuung de cifre.
    Am nevoie sa citesc din el 3 cate 3 cifre si sa le afisez separat.
    De ex: sirul din fisier: 123456789012345678901234567890
    Pe ecran trebuie sa afisez:
    123
    456
    789
    012
    345
    678
    901
    234
    567
    890

    Reply

    1. Salut. Avand in vedere ca numarul este foaaarte lung, nu poate fi citit ca un numar intreg. Asa ca vom citi din fisier, pana la terminarea acestuia (presupunand ca in fisier avem doar acest sir), si vom afisa cifra cu cifra, iar din 3 in 3 cate o linie noua. Programul ar fi ceva de genul: char c; int i = 0; while(f >> c) { cout < < c; i++; if ( i % 3 == 0) { cout << '\n'; } }

      Reply

  7. In cazul unei matrice,programul suferă vreo schimbare?

    Reply

    1. Salut. Citirea/Afisarea se face la fel, numai ca, in cazul unei matrice, o sa fie nevoie sa folosesti 2 for-uri ca sa citesti/afisezi element cu element din matrice.

      Reply

  8. In viitor o sa scrieti despre LUA,XML,Java ? PS:Sunt interesat mai mult de LUA pentru a invata scripta in el .

    Reply

    1. Salut. Nu avem in plan sa scriem si despre acele limbaje pentru moment.

      Reply

  9. #include “pch.h”
    #include
    #include
    using namespace std;
    ifstream f(“numere.txt”);
    int main()
    {
    int a[10], n, i, nr;

    for(i=1;i> n) {
    while (n != 0)
    {
    nr = n % 10;
    a[nr]++;
    n = n / 10;

    }

    }

    for (i = 1; i <= 10; i++)
    {
    if (a[i] == 1) {
    cout << i;
    }
    }

    return 4;
    }

    Primesc un sir de mai multe nr (gen 123 425) si trebuie sa imi afiseze cifrele care apar o singura data, si nu prea ma descurc… , am folosit un vector de apartite.

    Reply

    1. #include
      #include

      Am vazut ca nu apare in comentariu, am pus astea

      Reply

      1. Salut. La tine apare o problema pentru ca nu citesti nicaieri din fisier (acel “n” nu reprezinta un numar din fisier, pentru ca nu te folosesti de variabila ifstream f). Iti las aici problema rezolvata (daca nu intelegi ceva te rog sa ne scrii): https://pastebin.com/3W5mvmvG

        Reply

  10. Cum citesc un vector dintr un fișier?

    Reply

  11. Doar un comentariu, inteleg ca depaseste nivelul informaticii din liceu. Se pot citi date dintr-un fisier cu cin daca se face redirectarea bufferului folosit de cin. Similar, se pot scrie lucruri in fisier utilizand cout.

    std::ifstream in(“in.txt”);
    std::streambuf *cinbuf = std::cin.rdbuf(); //save old buf
    std::cin.rdbuf(in.rdbuf()); //redirect std::cin to in.txt!

    https://stackoverflow.com/questions/10150468/how-to-redirect-cin-and-cout-to-files

    Reply

  12. M-a ajutat extrem de mult aceasta lectie. Apreciez enorm de mult efortul pe care l-ati depus inspre a crea aceasta pagina

    Reply

  13. hei, dar daca de exemplu vreau sa citesc exact n cifre cu ajutorul while(f>>x),
    se poate?

    Reply

  14. cum stim ca am ajuns la sfarsitul fisierului?

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *