2.6.3. Functia scanf - Litera d

2019/01/12 in Programare in C

Specificatorii de format terminati in litera d permit citirea intregilor zecimali si conversia lor spre tipul int.

Numarul poate fi precedat de un semn. El trebuie sa apartina intervalului [-32678, 32767]. In caz contrar, rezulatul va fi imprevizibil.

Campul in care se citeste intregul se defineste ca in cazurile precedente.

Exemple:

1. Fie declaratia:

int n;

si apelul:

scanf("%d",&n);

Daca in campul curent din zona tampon se afla intregul:

 123 

precedat si urmat de cel putin un caracter alb, atunci dupa acest apel se va pastra in zona de memorie alocata lui n valoarea in binar a intregului zecimal 123.

La revenire functia scanf returneaza valoarea 1 (un camp citit corect).

2. Fie declaratiile:

int i1,i2,i3;

si apelul:

scanf("%2d %3d %2d",&i1,&i2,&i3);

Daca in zona de intrare se afla succesiunea de cifre:

1234567

precedata si urmata de caractere albe, atunci dupa apel variabilele i1, i2 si i3 au respectiv valorile 12, 345 si 67.

Intr-adevar, primul specificator de format asigura citirea cifrelor dintr-un camp de 2 cifre, al doilea dintr-un camp de 3 cifre, iar al treilea dintr-un camp de 2 cifre. La revenire, functia scanf returneaza valoarea 3 (3 campuri citite corect).

3. Fie declaratia:

int n;

si apelul:

scanf("%d",&n);

Daca, la intrare, constructia curenta este i23, atunci constructia respectiva se considera eronata, deoarece ea nu este un intreg zecimal. In acest caz scanf nu citeste nimic si se revine din ea cu valoarea 0. Constructia respectiva ramane curenta, deci ea poate fi citita apeland in continuare functia scanf cu un alt specificator de format (de ex. %s) sau macroul getchar.

4. Consideram declaratia si apelul scanf din Exemplul 3. Daca la intrare se afla constructia 23i, atunci se va citi intregul 23.

Campul incepe cu cifra 2 si se sfarseste cu cifra 3, deoarece dupa ea urmeaza o litera, adica un caracter care nu intra in compunerea intregilor zecimali.

La un nou apel al functiei scanf se va incerca citirea literei i.

Dupa citirea intregului 23 se va reveni din scanf cu valoarea 1.

2.6.4. Functia scanf - Litera o