You are on page 1of 7

INSTRUCŢIUNILE LIMBAJULUI C++

Operaţii de intrare/ieşire
În C, spre deosebire de alte limbaje, sistemul intrare/ieşire nu este parte a limbajului,
ci este introdus printr-un set de funcţii aflate în biblioteca standard. În exemplele din
prima parte a acestei lucrari, se vor utiliza fencţia printf, pentru afişare date pe ecran, şi
funcţia scanf, pentru citire date de la tastatură. Cum ambele funcţii se află în fişierul antet
stdio.h, toate programele ce utilizează aceste funcţii trebuie să conţină declaraţia:

#include <stdio.h>

Funcţia printf

Funcţia printf are următorul prototip în fişierul antet stdio.h:

int printf(const char *sir_format [, argument, ...])

unde sir_format poate conţine caractere şi specifictori de format.


Efectul acestei funcţii constă în transferul către dispozitivul de ieşire a
caracterelor şi valorilor argumentelor din lista ce urmează după sir_format, dacă există
argumente, Transferul valorilor se face conform specificatorilor de format specificaţi
în sir_format. Aceştia sunt precedaţi de caracterul ‘%’, iar numărul şi tipul lor trebuie
să corespundă cu numărul şi tipul argumentelor.

Afişarea valorilor de tip int

Pentru afişarea valorilor de tip int, se foloseşte specificatorul de format %d.


Programul de mai jos exemplifică utilizarea acestui specificator de format:

#include <stdio.h>
void main(void)
{
int an = 2004;
int luna= 10;
int zi = 15;
printf("DATA este: %d.%d.%d\n", zi, luna, an);
}

După compilare şi execuţie, pe ecran, se afişează următoarele:

DATA este:15.10.2004
Afişarea valorilor de tip float

Pentru afişarea valorilor de tip float, se foloseşte specificatorul de format %f.


Programul de mai jos exemplifică utilizarea acestui specificator de format:

#include <stdio.h>
void main(void)
{
float t=3201;
printf("%f secunde = %f minute\n",t,t/60);
}

După compilare şi execuţie, pe ecran, se afişează următoarele:


3201.000000 secunde = 53.350000 minute

Observaţie: %F nu este considerat specificator de format.


Afişarea valorilor de tip char

Pentru afişarea valorilor de tip char, se foloseşte specificatorul de format %c.


Programul de mai jos exemplifică utilizarea acestui specificator de format:

#include <stdio.h>
void main(void)
{
char ch=65;
printf("Caracterul cu cod %d este \'%c\'",ch,ch);
}

După compilare şi execuţie, pe ecran, se afişează următoarele:

Caracterul cu codul 65 este 'A'

Afişarea unui şir de caractere

Pentru afişarea unui şir de caractere, se foloseşte specificatorul de format %s.


Programul de mai jos exemplifică utilizarea acestui specificator de format:

#include <stdio.h>
void main(void)
{
printf("Sirul de caractere afisat este:\n");
printf("%s\n","Curs C/C++");
}

După compilare şi execuţie, pe ecran, se afişează următoarele:

Sirul de caractere afisat este:


Curs C/C++
Afişarea semnului înainte unei valori

Pentru afişarea semnului, plus sau minus, înaintea unei valori, se va include
caracterul ‘+’ imediat după caracterul ‘%‘, în specificatorul de format. Programul de mai jos
exemplifică utilizarea unui astfel de specificator de format:

#include <stdio.h>
void main(void)
{
int i=-32;
float x=-23.5;
printf("Modul nr int neg %+d este %+d\n",i,-i);
printf("Modul nr real neg %+g este %+f\n",x,-x);
}

După compilare şi execuţie, pe ecran, se afişează următoarele:

Modul nr int neg -32 este +32


Modul nr real neg -23.5 este +23.500000
Afişarea valorilor întregi precedate de zero

Pentru afişarea unui număr întreg formatat care să conţină zerouri în loc de
spaţii, se va include în specificatorul de format caracterul ’0’ (cifra zero), între caracterul ‘%‘ şi
numărul de poziţii de afişare. Programul de mai jos exemplifică utilizarea unui astfel de
specificator de format:

#include <stdio.h>
void main(void)
{
int i=2;
printf("i=%03d\n",i);
printf("i=%03d\n",-i);
}

După compilare şi execuţie, pe ecran, se afişează următoarele:

i=002
i=-002

Afişarea prefixului pentru valorile întregi octale şi zecimale

Pentru afişarea prefixului unui număr întreg în octal sau hexazecimal, se va


include în specificatorul de format şi caracterul ’o’ (litera o) sau, respectiv, caracterul
’x’ sau ’X’, imediat după caracterul ‘%. Programul de mai jos exemplifică utilizarea unui
astfel de specificator de format:

#include <stdio.h>
void main(void)
{
int nr=24;
printf("Val zecimala %d este:\n",nr);
printf("\t%#o in octal si\n",nr);
printf("\t%#x sau %#X in hexazecimal\n",nr,nr);
}

După compilare şi execuţie, pe ecran, se afişează următoarele:

Val zecimala 24 este:


030 in octal si
0x18 sau 0X18 in hexazecimal

Formatarea unei valori exponenţiale

Pentru afişarea unei valori exponenţiale formatate, adică afişarea unui număr în
format exponenţial cu mantisa formatată, afişată pe un anumit număr de poziţii cu
un anumit număr de zecimale, se vor include în specificatorul de format, imediat
după caracterul ‘%‘, numărul poziţiilor de afişare şi numărul de zecimale, separate
printr-un punct. Programul de mai jos exemplifică utilizarea unui astfel de specificator de
format:

#include <stdio.h>
void main(void)

{
float pi=3.1416;
printf("%8.1e\n",pi);
printf("%8.2e\n",pi);
printf("%8.3e\n",pi);
}

După compilare şi execuţie, pe ecran, se afişează următoarele:

3.1e+00
3.14e+00
3.142e+00

Alinierea la stânga a valorilor

Pentru alinierea la stânga a valorilor afişate, se va include în specificatorul de format


caracterul ‘-‘ (semnul minus), imediat după caracterul ‘%‘. Programul de mai jos exemplifică
utilizarea unor astfel de specificatori de format:

#include <stdio.h>
void main(void)
{
int i = 3;
float x= 10.3;
printf("Aliniere dreapta valoare i=%7d\n", i);
printf("Aliniere stanga valoare i=%-7d\n", i);
printf("Aliniere dreapta valoare x=%7.2f\n", x);
printf("Aliniere stanga valoare x=%-7.2f\n", x);
}

După compilare şi execuţie, pe ecran, se afişează următoarele:

Aliniere dreapta valoare i= 4


Aliniere stanga valoare i=4
Aliniere dreapta valoare x= 10.30
Aliniere stanga valoare x=10.30

Determinarea numărului de caractere afişate

Când se doreşte să se cunoască numărul de caractere afişate de funcţia printf, se


plasează în şirul de format specificatorul de format %n. La întâlnirea unui astfel de
specificator, funcţia printf va atribui unei variabile, din lista de argumente, numărul de
caractere afişate până la întâlnirea respectivului specificatorul de format. Programul
de mai jos exemplifică utilizarea unor astfel de specificatori de format:

#include <stdio.h>
void main(void)
{
int n1,n2;
printf("Determina%n" nr caractere afisate:%n\n",
&n1,&n2);
printf("n1=%d n2=%d\n",n1,n2);
}
După compilare şi execuţie, pe ecran, se afişează următoarele:

Determina nr caractere afisate:


n1=9 n2=31

Citirea valorilor întregi

La citirea valorilor întregi, se pot folosi specifictori de format: %d , %x , %o sau %u pentru


întreg zecimal, hexazecimal, octal sau, respectiv, fară semn; %D , %X , %O sau %U (sau %ld ,
%lx , %lo sau %lu) pentru întreg lung zecimal, hexazecimal, octal sau, respectiv, fară semn.
Programul de mai jos exemplifică utilizarea unora dintre aceşti specificatori de format:

#include <stdio.h>
#include <conio.h>
void main(void)
{
int n;
long int n_l;
clrscr();
printf("\nIntroduceti un numar intreg: ");
scanf("%d", &n);
printf("nr=%d",n);
printf("\nIntroduceti un numar intreg lung: ");
scanf("%D", &n_l); /* sau */
// scanf("%ld", &n_l);
// Daca nr long int este 45000,rezulta
printf("nr=%ld\n",n_l); /* nr=45000 */
printf("nx=%lx\n",n_l); /* nx=afc8 */
printf("no=%lo\n",n_l); /* no=127710 */
printf("\nIntroduceti un numar hexa lung: ");
scanf("%X", &n_l); /* sau */
// scanf("%lx", &n_l); Daca nr hexa este afc8,
printf("nr=%ld\n",n_l); /* rezulta nr=45000*/
printf("\nIntroduceti un numar octal lung: ");
scanf("%O", &n_l); /* sau */
// scanf("%lo", &n_l); Daca nr octal este 127710,
printf("nr=%ld\n",n_l); /* rezulta nr=45000*/
getch();
}

Programul următor utilizează un specificator de format cu un număr specificat de caractere


citite:

#include <stdio.h>
#include <conio.h>
void main(void)
{
int n;
clrscr();
printf("\nIntroduceti un numar intreg: ");
scanf("%3d", &n); /* Daca se tasteaza 1234 */
printf("nr=%d",n); /* nr=123 */
getch();
}
Citirea valorilor reale

La citirea valorilor de tip float, se pot folosi următorii specificatori de format: %f , %e


sau %E, %g sau %G; la citirea valorilor de tip double, se pot folosi specificatorii de format: %lf ,
%le sau %lE , %lg sau %lG, iar la citirea valorilor de tip long double, se pot folosi specificatorii de
format: %Lf , %Le sau %LE , %Lg sau %LG.
Programul de mai jos exemplifică utilizarea unora dintre aceşti specificatori de format:

#include <stdio.h>
#include <conio.h>
void main(void)
{
float r;
double d;
long double l_d;
clrscr();
printf("\nIntroduceti un numar real: ");
scanf("%f", &r);
printf("r=%f",r);
printf("\nIntroduceti un numar real: ");
scanf("%lf", &d);
printf("d=%lf",d);
printf("\nIntroduceti un numar real: ");
scanf("%Lf", &l_d);
printf("l_d=%Lf",l_d);
getch();
}

Citirea şirurilor de caractere

Pentru citirea caracterelor, se foloseşte specifictorul de format %s. Dacă după


caracterul ‘%’ se introduce şi un numar intreg n, şirul citit să conţine cel mult n caractere.
Programul de mai jos exemplifică utilizarea acestor specificator de format:
#include <stdio.h>
#include <conio.h>
void main(void)
{
char sir[7];
clrscr();
printf("\nIntroduceti cel mult 7 caract:");
scanf("%s", sir); /* Daca se tasteaza:1234567 */
printf("sir=%8s",sir); /* sir= 1234567 */
printf("\nIntroduceti cel mult 5 caract:");
scanf("%5s", sir); /* Daca se tasteaza:1234567 */
printf("sir=%8s",sir); /* sir= 12345 */
getch();
} Citirea datelor de tipuri diferite

Pentru citirea datelor de tipuri diferite, se pot folosi şiruri de format ce conţin
combinaţii ale specifictorilor de format prezentaţi mai sus. La citire, după fiecare dată
introdusă se tastează “spaţiu” sau “enter”.
Programul de mai jos exemplifică utilizarea unui sir de specificatori de format:

#include <stdio.h>
#include <conio.h>
void main(void)
{
int zi,an;
char luna[3];
clrscr();
printf("\nIntroduceti data (15 nov 2004):");
scanf("%d %3s %d", &zi,luna,&an);
printf("Data: %d %s %d",zi,luna,an);
getch();
}

You might also like