Skip to content

Citirea si afisarea in limbajul C ​

  • Pana acum am folosit cin si cout din C++ pentru citire si afisare.
  • Limbajul C are propriile sale functii pentru asta: scanf (citire) si printf (afisare).
  • Le vei intalni in multe surse de pe internet si in coduri mai vechi, asa ca este util sa le cunosti.
  • Citirea si afisarea e mai rapida in limbajul C, decat in C++.

Pentru a le folosi, trebuie sa includem biblioteca <cstdio>:

cpp
#include <cstdio>

Descriptori de format ​

scanf si printf au nevoie sa stie ce tip de valoare citesc sau scriu. Pentru asta folosim descriptori de format:

DescriptorTip
%dint
%cchar
%ssir de caractere
%ffloat
%lfdouble

scanf — citirea de la tastatura ​

Forma generala:

cpp
scanf(format, &variabila);

Important

Inainte de numele variabilei punem & (adresa variabilei). Este o regula a lui scanf — fara &, programul nu va citi corect.

Citirea unui numar intreg ​

cpp
#include <cstdio>
int x;

int main()
{
    scanf("%d", &x);
    printf("Ai citit numarul %d\n", x);
    return 0;
}

Intrare:

7

Afisare:

Ai citit numarul 7

Echivalentul in C++ ar fi cin >> x;.


Citirea mai multor valori ​

Putem citi mai multe valori intr-un singur scanf, punand mai multi descriptori in format:

cpp
#include <cstdio>
int a, b;
float c;
int main()
{
    scanf("%d%d%f", &a, &b, &c);
    printf("a = %d, b = %d, c = %f\n", a, b, c);
    return 0;
}

Intrare:

5 3 2.5

Afisare:

a = 5, b = 3, c = 2.500000

Echivalentul in C++ ar fi cin >> a >> b >> c;.


printf — afisarea pe ecran ​

Forma generala:

cpp
printf(format, expresii);

In format scriem textul de afisat, iar acolo unde vrem sa apara valoarea unei variabile punem un descriptor (%d, %f etc.).

Afisarea unui text simplu ​

cpp
#include <cstdio>
int main()
{
    printf("Hello world!\n");
    return 0;
}

Afisare:

Hello world!

Echivalentul in C++ ar fi cout << "Hello world!";.

Observatie

\n inseamna rand nou (echivalent cu endl din C++).


Afisarea unor valori in text ​

cpp
#include <cstdio>
int x;
float y;
int main()
{
    x = 20;
    y = 5.49;
    printf("Eu am %d ani si tu ai %f bani!\n", x, y);
    return 0;
}

Afisare:

Eu am 20 ani si tu ai 5.490000 bani!

Echivalentul in C++ ar fi cout << "Eu am " << x << " ani si tu ai " << y << " bani!";.


Exemplu complet: suma a doua numere ​

cpp
#include <cstdio>
int a, b;
int main()
{
    scanf("%d%d", &a, &b);
    printf("%d\n", a + b);
    return 0;
}

Intrare:

4 9

Afisare:

13

Citirea si afisarea din fisiere ​

In C, lucrul cu fisierele se face cu fscanf (citire) si fprintf (scriere), foarte asemanatoare cu scanf si printf. In plus, trebuie sa deschidem fisierul cu fopen.

Declararea si deschiderea unui fisier ​

cpp
FILE *fin;                          // declar pointerul catre fisier
fin = fopen("date.in", "r");        // deschid fisierul pentru citire ("r" = read)

Pentru scriere folosim "w" (write):

cpp
FILE *fout;
fout = fopen("date.out", "w");

Exemplu complet: suma a doua numere din fisier ​

Fisierul date.in contine:

5 3

Programul:

cpp
#include <cstdio>
FILE *fin = fin = fopen("date.in", "r");
FILE *fout = fopen("date.out", "w");;
int a, b;
int main()
{      
    fscanf(fin, "%d%d", &a, &b);
    fprintf(fout, "%d\n", a + b);

    return 0;
}

Fisierul date.out va contine:

8

Diferente pe scurt: C vs C++ ​

OperatieC (cstdio)C++ (iostream / fstream)
Biblioteca consola#include <cstdio>#include <iostream>
Citire de la tastaturascanf("%d", &x);cin >> x;
Afisare pe ecranprintf("%d", x);cout << x;
Declarare fisierFILE *fin;ifstream fin("date.in");
Deschidere fisierfin = fopen("date.in", "r");(se face la declarare)
Citire din fisierfscanf(fin, "%d", &x);fin >> x;
Scriere in fisierfprintf(fout, "%d", x);fout << x;

Observatie

In acest manual vom folosi predominant stilul C++ (cin, cout, fin, fout). Stilul C este insa util de cunoscut pentru ca apare frecvent in coduri mai vechi sau in surse de pe internet.