Professional Documents
Culture Documents
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
#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);
}
DATA este:15.10.2004
Afişarea valorilor de tip float
#include <stdio.h>
void main(void)
{
float t=3201;
printf("%f secunde = %f minute\n",t,t/60);
}
#include <stdio.h>
void main(void)
{
char ch=65;
printf("Caracterul cu cod %d este \'%c\'",ch,ch);
}
#include <stdio.h>
void main(void)
{
printf("Sirul de caractere afisat este:\n");
printf("%s\n","Curs C/C++");
}
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);
}
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);
}
i=002
i=-002
#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);
}
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);
}
3.1e+00
3.14e+00
3.142e+00
#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);
}
#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:
#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();
}
#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
#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();
}
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();
}