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 🙂

17 Comments

  1. 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.




    2

    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 🙂




      2

      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 }




      1

      Reply

  2. 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




    1

    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'; } }

    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.




      0

      Reply

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




    0

    Reply

  4. #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.




    0

    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




        0

        Reply

Leave a Reply to admin Cancel reply

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