Sunteți pe pagina 1din 10

Universitatea tefan cel Mare din Suceava

Facultatea de Inginerie Electric i tiina calculatoarelor

~ Instuciunile printf i scanf ~

Coordonator: Student:

Dr. Prodan Remus Moisuc Iuliana-Alexandra


Calculatoare 3115B
FUNCIILE PRINTF SI SCANF

-eseu-

Funciile utilizate mai frecvent pentru realizarea operaiilor de intrare/ieire


folosind terminalul standard sunt :

pentru intrri : getch, getche, gets i scanf

pentru ieiri : putch, puts i printf

1. PRINTF

n limbajul C, printf desemneaz o familie de funcii. Se poate tipri pe


ecran (printf), ntr-un fiier (fprintf), sau ntr-un string (sprintf). Funcii
pentru procesarea unei liste variabile de argumente (vprintf, ...) sunt de
asemenea disponibile.

Sintaxa general :
printf(const char * restrict format, ...);

n cel mai simplu program C este prezentat un exemplu bun de funcie


printf:

La afiarea unei variabile se pune % i apoi tipul variabilei n interiorul


textului. Dup ce se inchid ghilimelele urmeaza virgula (,) i se insereaz
variabilele care trebuie nlocuite n text; acestea trebuie afiate in ordinea
corect.
-Specificatorii de format sunt reprezentai n tabelul urmtor:

Expresiile afiate se pot alinia la stnga sau la dreapta i se poate fora


afiarea semnului astfel :
semnul plus afieaz explicit semnul expresiei
semnul minus aliniaz expresia afiat la stnga
absena oricrui semn semnific alinierea expresiei afiate la dreapta
Pentru numerele ntregi i pentru irurile de caractere se poate
specifica un numr care nseamn spaiul folosit pentru afiare. Dac
spaiul necesar este mai mic sau egal cu numrul specificat, atunci
se vor afia suplimentar spaii (sau zerouri, dac numrul este
precedat de cifra 0) pn la completarea spaiului de afiare.
Pentru numerele reale se pot specifica, opional, semnul pentru
aliniere i dou numere separate prin punct. Primul precizeaz
dimensiunea total de afiare, iar al doilea precizia, adic numrul
de zecimale afiate.
n cazul irurilor de caractere, specificarea a dou numere separate
prin punct indic faptul c primul numr reprezint numrul de
caractere din ir care se vor afia, iar al doilea reprezint limita
superioar de tiprire, completarea fcndu-se cu spaii la dreapta
sau stnga, n funcie de modul de aliniere. Poate apare fenomenul
de trunchiere a irului afiat n cazul n care dimensiunea acestuia
depete limita inferioar.
n cazul unui numr ntreg, al doilea numr indic o completare la
stnga cu zerouri pn se ajunge la dimensiunea de afiare
specificat.
De exemplu:

Exemple:

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.
Sintaxe :

2. SCANF

Functia scanf este o functie cu ajutorul careia putem citi date de la


tastatura. Sintaxa functiei scanf este urmatoarea:

scanf ( const char *format [, lista_adrese_variabile])

Aceasta functie realizeaza urmatoarele operatii:


citete din fiierul standard de intrare stdio o secven de cmpuri de
intrare, caracter cu caracter, pn la terminarea introducerii
cmpurilor i apsarea tastei <enter>
formateaz fiecare cmp conform formatului specificat n lista de
formate Din caracterele citite se calculeaz valori numerice sau
literale, conform tipului fiecrei variabile, dimensiunile de format
specificate i a separatorilor de cmpuri predefinii (spaiu, tab i
enter) sau impui explicit
valorile astfel construite sunt stocate la adresele variabilelor
specificate ca argumente;
Indiferent de formatul folosit, la ntalnirea unui spaiu n introducerea
datelor, este terminat citirea variabilei.

Pentru funcia de citire scanf trebuie folosit operatorul de adres &.


Pentru variabilele citite cu aceast funcie trebuie precizate adresele la
care se stocheaz n memoria calculatorului valorile variabilelor. Funcia
va introduce valorile citite direct la acele adrese.
Singurul caz n care nu este obligatorie folosirea operatorului adres
pentru citirea valorii unei variabile cu funcia scanf este citirea unui ir de
caractere.

Specificatorii de format ai functiei scanf sunt prezenti in lista urmatoare:

%c citeste un caracter
%d citeste un intreg zecimal
%i citeste un intreg zecimal
%e citeste un numar float
%f citeste un numar float
%g citeste un numar float
%o citeste un nr octal fara semn
%s citeste un sir de caractere
%x citeste un nr hexazecimal fara semn
%p citeste un pointer
%n argumentul asociat primeste o valoare intreaga egala cu
numarul de caractere deja citite
%u citeste un numar intreg fara semn
%[] scanare pentru set de caractere

In specificatorul de format pot sa apara si modificatori de tip:


Modificatorul h, care poate precede caracterele de
conversie d,i,o,u,x sau X, precizeaza ca valoarea convertita trebuie
memorata ca un short int sau unsigned short int.
Modificatorul l, poate precede caracterele de conversie d,i,o,u,x,X,
caz in care valoarea trebuie memorata ca un long int sau unsigned
long int, sau poate precede caracterele e,E,f,g,G, caz in care
valoarea trebuie memorata ca un double.
Modificatorul L, poate precede numai caracterele e,E,f,g,G si
precizeaza ca valoarea convertita trebuie memorata ca un long
double.
O caracteristic foarte interesant a funciei scanf() este
numit scanset. Un specificator scanset se poate crea prin
includerea unui liste de carcatere n interiorul unur paranteze drepte.
Spre exemplu, iat un specificator scanset continand literele ABC: %
[ABC]. Cnd scanf() intlnete un specificator scanset, ncepe citirea
caracterelor i depozitarea lor ntr-un tablou punctat de argumentul
corespunztor. Citirea va vontinu ct timp caracterul citit face parte
din scanset.
n momentul n care caracterul citit nu face parte din scanset,
funcia scanf() oprete citirea pentru acest specificator i avanseaz
la urmatorul specificator din irul de control.
Folosind semnul n scanset se specific un domeniu. De exemplu,
urmtorul specificator se refer la literele de la A la Z: %[A-Z].

Iat un exemplu de scanset care accept caractere litere mici i


litere mari. ncercai s introducei cteva litere, apoi orice alt
caracter i apoi din nou litere. Dup ce apasai tasta enter numai
literele introduse naintea caracterelor care nu au fost litere vor fi
coninute n ir.

Dac este posibil apariia erorilor la introducerea datelor, este necesar ca


imediat dup apariia unei erori s folosim una din funciile :

fflush(stdin); - pentru golirea buffer-ului fiierului standard de intrare

fflushall(); - pentru golirea tuturor buffer-elor fiierelor

n exemplul urtor am prezentat o astfel de eroare, n acest caz se va


folosi ffushall() :
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.

Sintaxe :
n concluzie, n C avem functia printf care ne permite scrierea
datelor la dispozitivul standard de iesire i functia scanf care ne
permite introducerea datelor de la tastatur.

Bibliografie:

http://www.cplusplus.com/reference/cstdio/scanf/

http://www.manpagez.com/man/3/scanf/

http://ctehen.ro/wp-content/uploads/2016/05/MANUAL_C.pdf

https://www.edusoft.ro/fisiere/aplicatii_c_cpp_patrut.pdf

http://www.betacode.info/functiile-printf-si-scanf-2/

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