Functia scanf

Funcţia scanf este folosită pentru preluarea formatată de la tastatură a valorilor pentru
variabile. Funcţia are următoarea structură:
scanf(const_sir_caractere, lista_adrese_var_citite);
constanta_sir_caractere este un string care conţine numai descriptorii de tip ai
variabilelor ce se citesc. Descriptorii sunt cei elementari pe care i-am prezentat mai sus (vezi
funcţia printf), adică: %c, %s, %d, %u, %ld, %lu, %x, %X, %o, %f, %e, %E, %g, %G, %lf, %le,
%lE, %lg, %lg, %Lf, %Le, %LE, %Lg, %LG, %p.

În exemplul următor apar câteva citiri de la tastatură:
# include <stdio.h>
void main()
{
int n;
float f;
char s[10]; /* sir de caractere */
scanf("%d%f%s",&n,&f,s);
printf("Am citit: %d, %f,%s",n,f,s);
}
Facem observaţia că prin &var se înţelege adresa la care se află reţinută în memorie
variabila var. În C valorile se returnează prin adresă prin intermediul parametrilor unei funcţii.
Variabila s este deja un pointer către zona de memorie în care se memorează un şir de
caractere, aşadar nu este necesar să punem semnul & (şi) în faţa lui s la citire. Dacă se pune
totuşi semnul & în faţa variabilei s la citire, nu se semnalează eroare nici măcar atenţionare,
“pleonasmele” în C în general sunt ignorate de compilator. Vom reveni cu mai multe explicaţii
când vom vorbi despre pointeri şi tablouri (şiruri).
Pentru funcţiile printf şi scanf există şi variantele pentru scriere, respectiv citire în/dintrun
string sau fişier text.
Numele funcţiilor pentru string-uri încep cu litera s (sprintf, respectiv sscanf) şi
funcţionează absolut la fel ca cele obişnuite numai că destinaţia scrierii, respectiv sursa citirii
este un string. În consecinţă mai apare un parametru suplimentar (variabila şir de caractere) în
faţa celor pe care îi au funcţiile printf şi scanf.
Numele funcţiilor de scriere şi citire pentru fişiere text încep cu litera f (fprintf, respectiv
fscanf). Aceste funcţii au un parametru suplimentar (variabila pointer către tipul FILE).
16
Asupra acestor funcţii o să revenim atunci când o să discutăm despre string-uri, respectiv
fişiere.
În Borland C pentru DOS există variantele cprintf, respectiv cscanf ale funcţiilor printf,
respectiv scanf pentru scriere şi citire formatată într-o fereastră text (creată cu funcţia window).
Facem observaţia că schimbarea culorii textului şi a fundalului pe care se afişează un text are
efect în cazul utilizării funcţiei cprintf, dar nu are efect atunci când se foloseşte funcţia printf. De
asemenea, pentru salt la începutul unei linii trebuie să punem pe lângă \n şi secvenţa escape \r, ca
să se revină la începutul rândului, ceea ce nu era necesar în cazul funcţiei printf, secvenţa escape
\n fiind suficientă.
Trebuie precizat faptul că funcţia printf nu ţine cont de marginile ferestrei text definite cu
window. Ca parametri, funcţia window primeşte cele 4 coordonate ecran text ale colţurilor
stânga-sus şi respectiv dreapta-jos ale ferestrei.

0 comentarii:

Trimiteți un comentariu