Sunteți pe pagina 1din 3

Funciile printf() i scanf() Limbajul C utilizeaz pentru introducerea i afiarea datelor funciile scanf() i printf() cuprinse n biblioteca stdio.h.

Astfel, datele sunt preluate de la tastatur cu ajutorul functiei scanf() i, dup prelucrare, afiate pe ecran prin intermediul funciei printf(). Funcia printf() preia valori ntregi sau reale pe care le transform n iruri de caractere afiate apoi pe ecran. Aceast funcie cuprinde dou sau mai multe argumente, primul fiind un ir de caractere prin care se precizeaz tipul de variabil, urmat de celelalte argumente ce reprezint variabilele in cauz. Descriptorii de format (descriptorii de tip) cuprini n primul argument pot fi : %c caracter (char); printf("Afiseaza caracterul %c",'a'); %s ir de caractere ncheiat cu caracterul \0 (string); printf("Afiseaza un sir de %s","caractere"); %d ntreg cu semn (int); printf("Afiseaza un intreg cu semn %d", 314); %u ntreg fr semn (unsigned int); printf("Afiseaza un intreg fara semn %u", 314); %x ntreg n baza 16 fr semn (int) (cifrele n hexazecimal pentru 10, 11, 12, 13, 14, 15 sunt litere mici, adic a, b, c, d, e i f); printf("Afiseaza un intreg in baza 16 fara semn %x", 314); %X la fel ca %x, numai c cifrele n hexazecimal pentru 10, 11, 12, 13, 14, 15 sunt litere mari; printf("Afiseaza un intreg in baza 16 fara semn %X", 314); %o ntreg n baza 8 fr semn (int); printf("Afiseaza un intreg in baza 8 fara semn %o", 314); %f real pe 6 octei (float), notaie zecimal (fr exponent); printf("Afiseaza o valoare reala, notatie zecimala %f", 3.14); %e real pe 6 octei (float), notaie exponenial, tiinific (litera e de la exponent este mic) ; printf("Afiseaza o valoare reala, notatie exponentiala %e", 3.14); %E la fel ca %e, numai c pentru litera de la exponent este mare; printf("Afiseaza o valoare reala, notatie exponentiala %E", 3.14); %g real pe 6 octei (float), notaie zecimal sau exponenial, care este mai scurt, iar dac se afieaz exponenial, atunci litera de la exponent este e; printf("Afiseaza o valoare reala, notatie exponentiala sau zecimala %g", 3.14); %G real pe 6 octei (float), notaie zecimal sau exponenial, care este mai scurt, iar dac se afieaz exponenial, atunci litera de la exponent este E; printf("Afiseaza o valoare reala, notatie exponentiala sau zecimala %G", 3.14); %p adresa n hexazecimal (pentru pointeri). Acestor descriptori li se pot aduga convertori precum l, care reprezint long pentru ntregi i float pentru valori reale,ll pentru long long int, h marcheaza short int, hh reprezint signed char, iar L contribuie la afiarea valorilor de tip long double: %ld ntreg lung (pe 4 octei) cu semn (long); %lu ntreg lung (pe 4 octei) fr semn (unsigned long); %lf real pe 8 octei (double), notaie zecimal;

%le real pe 8 octei (double), notaie exponenial (litera exponent e este mic); %lE la fel ca la %le, numai litera exponent E este mare; %lg real pe 8 octei (double), notaie zecimal sau exponenial, care e mai scurt, dac e cazul se folosete liter mic pentru exponent; %lG real pe 8 octei (double), notaie zecimal sau exponenial, care e mai scurt, dac e cazul se folosete liter mare pentru exponent; %Lf real pe 10 octei (long double), notaie zecimal; %Le real pe 10 octei (long double), notaie exponenial (litera de la exponent este mic, adic e); %LE real pe 10 octei (long double), notaie exponenial (litera de la exponent este mare, adic E); %Lg real pe 10 octei (long double), notaie zecimal sau exponenial, care este mai scurt, liter mic pentru exponent; %LG real pe 10 octei (long double), notaie zecimal sau exponenial, care este mai scurt, liter mare pentru exponent. Descriptorii de tip pot conine specificri n privina preciziei, lungimii, orientrii si altor caracteristici astfel: %-(tip_data) - semnul minus marcheaz ncadrarea la stnga; printf("%-d",314); %+(tip_data) - semnul plus foreaz afiarea semnului chiar i naintea unei valori pozitive; printf("%+d",314); % (tip_data) - spaiul este afiat n locul semnului n cazul valorilor pozitive; printf("% d",314); %(numr)(tip_data) - numrul are rolul de a specifica lungimea minim a irului afiat; printf("%10d",314); %*(tip_data) lungimea minim este dat de argumentul urmtor de tip int; printf("%*d %d",3,14); %0(numr)(tip_data) - rezultatul este precedat de zerouri n loc de spaii pentru a atinge lungimea minim precizat; printf("%010d",314); %.(numr)(tip_data) - punctul urmat de un numr face referire la numrul cifrelor de dup virgul; printf("%.10d",314); %.*(tip_data) numrul cifrelor de dup virgul este dat de argumentul urmtor de tip int; printf("%.*d %d",3,14); %#g i %#G - zerourile din ncheiere nu sunt eliminate; %#f, %#F, %#e, %#E, %#g i %#G - rezultatul va conine mereu virgul; %#0, %#x, %#X - valoarea afiat va fi completat cu 0, 0x respectiv 0X. Functia printf() face parte dintr-o familie de funcii care cuprinde i: - Funcia vprintf() afieaz, de asemenea, n stdout, fiierul standard de ieire; - Funciiile fprintf() i vfprintf() se difereniaz de funcia printf prin faptul c transmit rezultatul ntr-un fiier precizat; - Funciile sprintf(), snprintf(), vsprintf() i vsnprintf() tipresc rezultatul ntr-o zon de memorie in loc s l afieze pe ecran; - Funcia vsnprintf() este similar funciei sprintf, ns nu accept un numr ilimitat de parametri ci accept un pointer ctre lista de argumente i accept un parametru n plus numit size (maximul de caractere care vor fi scrise);

Funciile asprintf() i vasprintf() genereaz dinamic noi string-uri.

Funcia scanf() citete datele de la fiierul standard de intrare, le interpreteaz conform primului argument care conine descriptori de format i le memoreaz n argumentele urmtoare. Primul argument, numit sirul de control, conine aceiai descriptori de tip i convertori ca funcia printf(). Din familia acestei funcii mai fac parte i: - Funciile fscanf() i vfscanf() care primesc date de la un flux (stream) precizat; - Funcia sscanf() i vsscanf() i citesc datele dintr-un ir de caractere.

S-ar putea să vă placă și