Cât de bine este când sunt date toate datele și nu trebuie introdus nimic. Dar, credeți-mă, acest lucru practic nu se întâmplă. Amintiți-vă de școală, când ați măsurat anumite lucruri, iar apoi valorile obținute au fost introduse în formulele necesare.
scanf
În limbajul C, pe lângă funcția de ieșire printf, există și funcția scanf pentru intrare. Iată funcția scanf chiar acum și vom arunca o privire mai atentă:
int i;
scanf ("% d", & i);
Pare foarte asemănător cu funcția printf. Tot între ghilimele duble specificator de format, dar diferența este în a doua parte a funcției. Ați observat apariția semnului (&)? Deci acest semn înseamnă luarea adresei. Chiar acum voi explica de ce este nevoie de acest lucru.
Trebuie să scriem valoarea introdusă nu undeva acolo, ci exact la adresa la care se află variabila noastră. Acestea. nesemnată (&) valoarea noastră introdusă va merge în toate locurile, cu excepția celor de care avem nevoie. Prin urmare, ori de câte ori trebuie să introduceți valori de la tastatură, puneți un semn de adresă (&) în fața variabilei.
Specificatorii de format
Ei bine, acum să trecem specificatorii de format:- % d - citire întreg
- % o - citește numărul octal
- % x - citește un număr hexazecimal
- % e (% f) - citește numărul real
- % s - caracter citit
- % s - linie de citire
int i;
scanf ("% d", & i);
int i;
scanf ("% o", & i);
int i;
scanf ("% x", & i);
float t;
scanf ("% f", & t);
char ch;
scanf ("% c", & ch);
char * str ;;
scanf ("% s", str);
Nu te apuca să lucrezi cu șiruri încă. De ce nu există niciun semn de a lua adresa? Vom analiza acest subiect puțin mai târziu.
Operatii de comparatie
Logica booleană este inițial încorporată în computer, adică. totul este construit pe 0 și 1. Dacă nu înțelegeți despre ce este vorba, atunci urmăriți filmul The Matrix, în care fiecare economizor de ecran verde era format din aceste două numere magice.
Desigur, 0 și 1 sunt bune, dar avem nevoie de sens logic, deci în operațiile booleene 0 este FALS și 1 este ADEVĂRAT. Aceste concepte TRUE și FALSE sunt strâns legate de operatii de comparatie... Pentru început, iată tot felul de operații de comparație:
Practic, cea mai frecventă greșeală pe care o fac începătorii este să confunde operațiunea de atribuire (=) cu operatie de comparatie(==). Acestea sunt lucruri complet diferite. Dar la începutul codificării, toată lumea are erori chiar pe această bază, așa că aveți grijă.
Vă rugăm să suspendați AdBlock pe acest site.
Să revenim la ultima listă a pasului anterior:
Listarea 1.
#include
Sarcina principală a acestui pas este să înveți cum să obții date de la utilizator.
Funcția scanf poate fi folosită pentru aceasta. Ea, ca și funcția printf, este descrisă în fișierul antet stdio.h. pentru că îl avem deja conectat în prima linie, apoi putem folosi liber funcția scanf din programul nostru.
Fig. 1. Sintaxă generală pentru scanf.
Ghilimelele duble indică specificatorul de format. În funcție de variabila în care vom stoca valoarea introdusă, trebuie să folosim specificatorul de format corespunzător.
Specificatori de format de bază:
% d- numere întregi
% f- numărul real de tip float
% lf- un număr real de tip dublu (notația lf din long float)
% c- simbol
Rețineți că funcția scanf folosește specificatori de format diferiți pentru tipurile float și double.
După șirul de format, trebuie să specificați adresa variabilei în care doriți să salvați datele. Pentru a indica adresa unei variabile, este suficient să scrieți semnul & (ampersand) în fața numelui acesteia, ca în figura de mai sus.
În cele din urmă, să scriem un program pentru adăugarea a două numere.
Lista 2.
#include
Compilați și rulați acest program. După lansarea programului, acesta va aștepta să introduceți date. Știm ce date trebuie să introduceți, pentru că am scris acest program. Pentru alți utilizatori care nu vor vedea codul programului, ar fi bine să afișeze un indiciu pe ecran ce date să introducă. Vedeți cum se face acest lucru în exemplul următor.
Acest program va fi util celor care își monitorizează starea de sănătate. Acest program calculează rata metabolică bazală folosind formula Mifflin-Saint Geor pe baza datelor pe care le introduceți (vârsta, înălțimea și greutatea).
Lista 3.
#include
De fapt, funcția scanf este o funcție de introducere a formatului. Este aproape mai complex decât printf. Dar a-i spune unui începător despre particularitățile muncii ei înseamnă în zadar să-l încarci cu informații inutile. În această etapă, aceste cunoștințe vă vor fi suficiente și, atunci când devine necesar să folosiți ceva mai mult, vă puteți da seama singur. Sau poate îți voi spune într-o lecție.
Biblioteca standard C/C++ include o serie de funcții pentru citirea și scrierea pe consolă (tastatură și monitor). Aceste funcții citesc și scriu date ca un simplu flux de caractere.
Conceptul de flux (flux), folosit în programare, este strâns legat de înțelegerea obișnuită, de zi cu zi, a cuvântului. Debitul de intrare poate fi comparat cu o conductă prin care apa (informația) intră în piscină (memoria computerului), debitul de ieșire - cu o conductă prin care apa iese din piscină. O caracteristică importantă a acestei conducte este că datele se pot deplasa doar într-o direcție la un moment dat. Chiar dacă se folosește aceeași țeavă pentru intrare și ieșire, acest lucru nu se poate întâmpla în același timp: pentru a comuta direcția de curgere, aceasta trebuie oprită, trebuie efectuate unele acțiuni și numai atunci fluxul trebuie direcționat în sens opus. . O altă caracteristică a fluxului este că aproape niciodată nu se usucă. Uneori se usucă, dar această perioadă nu poate fi lungă dacă sistemul funcționează normal.
Funcția standard de ieșire printf ()
Funcția printf () este o funcție standard de ieșire. Folosind această funcție, puteți afișa un șir de caractere, un număr, o valoare variabilă...
Funcția printf () are un prototip în fișierul stdio.h
int printf (char * șir de control, ...);
Dacă reușește, funcția printf () returnează numărul de caractere tipărite.
Șirul de control conține două tipuri de informații: caractere, care sunt imprimate direct pe ecran și specificatorii de format, care determină modul de afișare a argumentelor.
Funcția printf () este o funcție de ieșire formatată. Aceasta înseamnă că în parametrii funcției, trebuie să specificați formatul datelor care vor fi scoase. Formatul datelor este indicat de specificatorii de format. Specificatorul de format începe cu un caracter% urmat de un cod de format.
Specificatori de format:
%Cu | simbol |
% d | zecimal întreg |
% i | zecimal întreg |
% e | număr zecimal sub forma x.xx e + xx |
% E | număr zecimal sub forma x.xx E + xx |
% f | |
% F | virgulă mobilă zecimală xx.xxxx |
% g | % f sau% e, oricare dintre acestea este mai scurtă |
% G | % F sau % E, oricare dintre acestea este mai scurtă |
% o | număr octal |
% s | șir de caractere |
% u | număr zecimal fără semn |
% X | număr hexazecimal |
% X | număr hexazecimal |
%% | simbol % |
% p | indicator |
% n | indicator |
În plus, modificatorii l și h pot fi aplicați comenzilor de formatare.
% ld | print int lung |
% hu | imprimare scurtă nesemnată |
% Lf | imprimeu dublu lung |
În specificatorul de format, după simbolul % poate fi specificată o precizie (numărul de cifre după virgulă zecimală). Precizia se stabileste astfel:% .n<код формата>... Unde n este numărul de cifre după virgulă zecimală și<код формата>- unul dintre codurile date mai sus.
De exemplu, dacă avem o variabilă x = 10,3563 de tip float și dorim să afișăm valoarea acesteia cu precizie de până la 3 cifre după virgulă, atunci ar trebui să scriem:
printf ("Variabila x =% .3f", x);
Rezultat:
Variabila x = 10,356
De asemenea, puteți specifica marginea minimă imprimabilă. Dacă linia sau numărul este mai mare decât lățimea câmpului specificată, atunci întreaga linie sau numărul este tipărită.
De exemplu, dacă scrieți:
printf ("% 5d", 20);
atunci rezultatul va fi următorul:
20
Rețineți că numărul 20 nu a fost tipărit chiar de la începutul rândului. Dacă doriți ca spațiile neutilizate ale câmpului să fie umplute cu zerouri, atunci trebuie să puneți caracterul 0 în fața lățimii câmpului.
De exemplu:
printf ("% 05d", 20);
Rezultat:
00020
Pe lângă specificatorii de format de date, șirul de control poate conține caractere de control:
\ b | BS, fund |
\ f | Pagina nouă, traducere pagină |
\ n | Linie nouă, flux de linie |
\ r | Retur transport |
\ t | Filă orizontală |
\ v | Filă verticală |
\" | Citat dublu |
\" | Apostrof |
\\ | Backslash |
\0 | Caracter nul, octet nul |
\ A | Semnal |
\ N | Constanta octala |
\ xN | Constanta hexazecimala |
\? | Semnul întrebării |
Cel mai adesea veți folosi caracterul \ n. Cu acest caracter de control veți putea să faceți un avans de linie. Priviți exemplele de programe și veți înțelege totul.
Exemple de programe.
/ * Exemplul 1 * /
#include
void main (void)
{
int a, b, c; // Declararea variabilelor a, b, c
a = 5;
b = 6;
c = 9;
printf ("a =% d, b =% d, c =% d", a, b, c);
}
Rezultatul programului:
a = 5, b = 6, c = 9
/ * Exemplul 2 * /
#include
void main (void)
{
plutește x, y, z;
X = 10,5;
y = 130,67;
z = 54;
Printf ("Coordonatele obiectului: x:%. 2f, y:%. 2f, z:%. 2f", x, y, z);
}
Rezultatul programului:
Coordonatele obiectului: x: 10.50, y: 130.67, z: 54.00
/ * Exemplul 3 * /
#include
void principal ()
{
int x;
X = 5;
printf ("x =% d", x * 2);
}
Rezultatul programului:
x = 10
/ * Exemplul 4 * /
#include
void main (void)
{
printf ("\" Text între ghilimele \ "");
printf ("\ nConținut de oxigen: 100 %%");
}
Rezultatul programului:
„Text între ghilimele”
Conținut de oxigen: 100%
/ * Exemplul 5 * /
#include
void main (void)
{
int a;
A = 11; // 11 zecimale este egal cu b hexazecimal
printf ("a-dec =% d, a-hex =% X", a, a);
}
Rezultatul programului:
a-dec = 11, a-hex = b
/ * Exemplul 6 * /
#include
void main (void)
{
char ch1, ch2, ch3;
Ch1 = "A";
ch2 = „B”;
ch3 = "C";
Printf ("% c% c% c", ch1, ch2, ch3);
}
Rezultatul programului:
ABC
/ * Exemplul 7 * /
#include
void main (void)
{
char * str = "Șirul meu.";
Printf ("Acesta este% s", str);
}
Rezultatul programului:
Aceasta este linia Mea.
/ * Exemplul 8 * /
#include
void main (void)
{
printf ("Bună ziua! \ n"); // După imprimare, va apărea o nouă linie - \ n
printf ("Numele meu este Pavel."); // Aceasta va fi tipărită pe o nouă linie
}
Rezultatul programului:
Salut!
Numele meu este Pavel.
Scanf () funcție de intrare standard
Funcția scanf () este o funcție de intrare formatată. Cu ajutorul acestuia, puteți introduce date de la un dispozitiv de intrare standard (tastatură). Datele de intrare pot fi numere întregi, numere în virgulă mobilă, caractere, șiruri și pointeri.
Funcția scanf () are următorul prototip în fișierul stdio.h:
int scanf (char * șir de control);
Funcția returnează numărul de variabile cărora le-a fost atribuită o valoare.
Șirul de control conține trei tipuri de caractere: specificatori de format, spații și alte caractere. Specificatorii de format încep cu un caracter %.
Specificatori de format:
Când introduceți un șir folosind funcția scanf () (specificatorul de format% s), șirul este introdus înainte de primul spațiu !! acestea. dacă introduceți rândul „Bună lume!” folosind funcția scanf ().
scanf ("% s", str);
apoi, după introducere, șirul rezultat, care va fi stocat în matricea str, va consta dintr-un cuvânt „Bună ziua”. FUNCȚIA INSERE O LINIE ÎNAINTE PRIMUL SPAȚIU! Dacă doriți să introduceți linii cu spații, atunci utilizați funcția
char * gets (char * buf);
Cu funcția gets (), puteți introduce șiruri complete. Funcția gets () citește caracterele de la tastatură până când apare un caracter newline (\ n). Caracterul newline în sine apare când apăsați enter. Funcția returnează un pointer către buf. buf este un buffer (memorie) pentru șirul de intrare.
Deși gets () este în afara domeniului de aplicare al acestui articol, haideți să scriem un exemplu de program care vă permite să introduceți o linie întreagă de la tastatură și să o afișați pe ecran.
#include
void main (void)
{
tampon de carbon; // matrice (buffer) pentru șirul de intrare
Obține (buffer); // introduceți o linie și apăsați enter
printf ("% s", buffer); // afișează linia introdusă pe ecran
}
Încă o notă importantă! Pentru a introduce date folosind funcția scanf (), trebuie să îi transmiteți adresele variabilelor ca parametri, și nu variabilele în sine. Pentru a obține adresa unei variabile, trebuie să plasați semnul & (ampersand) în fața numelui variabilei. Semnul & înseamnă a lua o adresă.
Ce înseamnă adresa? Voi încerca să explic. Avem o variabilă în program. O variabilă își stochează valoarea în memoria computerului. Deci adresa pe care o obținem cu & este adresa din memoria computerului în care este stocată valoarea variabilei.
Să aruncăm o privire la un exemplu de program care ne arată cum să folosim &
#include
void main (void)
{
int x;
Printf ("Introduceți variabila x:");
scanf ("% d", & x);
printf ("Variabila x =% d", x);
}
Acum să revenim la linia de control scanf (). Din nou:
int scanf (char * șir de control);
Un caracter de spațiu pe o linie de control indică să omiteți unul sau mai multe spații în fluxul de intrare. Pe lângă un spațiu, poate fi perceput un caracter de tabulație sau de nouă linie. Un caracter diferit de zero indică citirea și eliminarea acestui caracter.
Delimitatorii dintre două numere introduse sunt spațiu, tabulator sau linie nouă. * după% și înainte de codul de format (specificator de format) indică citirea datelor de tipul specificat, dar nu atribuiți această valoare.
De exemplu:
scanf ("% d% * c% d", & i, & j);
tastând 50 + 20 va seta i la 50, j la 20, iar + va fi citit și ignorat.
Comanda format poate specifica cea mai mare lățime a câmpului de citit.
De exemplu:
scanf ("% 5s", str);
indică dacă să citiți primele 5 caractere din fluxul de intrare. Dacă introduceți 1234567890ABC, matricea str va conține doar 12345, restul caracterelor vor fi ignorate. Separatoare: spațiu, tab și newline - atunci când sunt introduse, sunt tratate ca toate celelalte caractere.
Dacă se găsesc alte caractere în șirul de control, acestea sunt destinate să identifice și să ignore caracterul corespunzător. Flux de caractere 10plus20 de către operator
scanf ("% dplus% d", & x, & y);
va seta x la 10, y la 20 și va omite caracterele plus, deoarece acestea apar în linia de control.
Una dintre caracteristicile puternice ale funcției scanf () este capacitatea de a specifica un set de scanare. Setul de căutare definește setul de caractere cu care vor fi comparate caracterele citite de funcția scanf (). Funcția scanf () citește caractere atâta timp cât acestea apar în setul de căutare. De îndată ce caracterul introdus nu apare în setul de căutare, scanf () trece la următorul specificator de format. Setul de căutări este determinat de o listă de caractere cuprinse între paranteze drepte. O paranteză deschisă este precedată de semnul %. Să aruncăm o privire la asta cu un exemplu.
#include
void main (void)
{
char str1, str2;
scanf ("%% s", str1, str2);
printf ("\ n% s \ n% s", str1, str2);
}
Să introducem un set de simboluri:
12345abcdefg456
Pe ecran, programul va afișa:
12345
abcdefg456
Când specificați un set de căutări, puteți utiliza și caracterul cratimă pentru a specifica spațierea, precum și lățimea maximă a câmpului de introducere.
scanf ("% 10", str1);
De asemenea, puteți defini caractere care nu sunt incluse în setul de căutare. Primul dintre aceste caractere este precedat de un ^. Setul de caractere face distincția între literele mici și mari.
Permiteți-mi să vă reamintesc că atunci când utilizați funcția scanf (), trebuie să îi transmiteți adresele variabilelor ca parametri. Codul de mai sus a fost scris:
char str; // o matrice de 80 de caractere
scanf ("% s", str);
Rețineți că str nu este precedat de &. Acest lucru se datorează faptului că str este o matrice, iar numele matricei, str, este un pointer către primul element al matricei. Prin urmare, semnul & nu este folosit. Deja transmitem adresa către scanf (). Ei bine, pur și simplu, str este adresa din memoria computerului în care va fi stocată valoarea primului element al matricei.
Exemple de programe.
Exemplul 1.
Acest program afișează interogarea „Câți ani ai?:” și așteaptă ca datele să fie introduse. Dacă, de exemplu, introduceți numărul 20, programul va afișa rândul „Ai 20 de ani”. Când apelăm funcția scanf (), punem semnul & în fața variabilei de vârstă, deoarece funcția scanf () are nevoie de adresele variabilelor. Funcția scanf () va scrie valoarea introdusă la adresa specificată. În cazul nostru, valoarea introdusă 20 va fi scrisă la adresa variabilei vârstă.
/ * Exemplul 1 * /
#include
void main (void)
{
int vârsta;
Printf ("\ nCâți ani ai?:");
scanf ("% d", & vârstă);
printf („Ai % d ani.”, vârsta);
}
Exemplul 2.
Programul calculatorului. Acest calculator poate adăuga doar numere. Dacă introduceți 100 + 34, programul va da rezultatul: 100 + 34 = 134.
/ * Exemplul 2 * /
#include
void main (void)
{
int x, y;
Printf ("\ nCalculator:");
scanf ("% d +% d", & x, & y);
printf ("\ n% d +% d =% d", x, y, x + y);
}
Exemplul 3.
Acest exemplu arată cum să setați lățimea de citire. În exemplul nostru, lățimea câmpului este de cinci caractere. Dacă introduceți un șir cu un număr mare de caractere, atunci toate caracterele de după al 5-lea vor fi eliminate. Observați apelul la funcția scanf (). Semnul & nu precede numele numelui matricei deoarece numele numelui matricei este adresa primului element din matrice.
/ * Exemplul 3 * /
#include
void main (void)
{
nume char;
Printf ("\ nIntroduceți numele dvs. de utilizator (nu mai mult de 5 caractere):");
scanf ("% 5s", nume);
printf ("\ nAi introdus% s", nume);
}
Exemplul 4.
Ultimul exemplu din acest articol arată cum puteți utiliza mai multe căutări. După pornirea programului, introduceți un număr de la 2 la 5.
/ * Exemplul 4 * /
#include
void main (void)
{
char bal;
Printf ("Evaluarea dvs. este 2,3,4,5:");
scanf ("%", & bal);
printf ("\ nEvaluare% c", bal);
}
Funcția scanf () este o rutină de intrare de uz general care citește date din fluxul stdin. Poate citi date de toate tipurile de bază și le poate converti automat în formatul intern dorit. Dacă printf () făcea intrare mai degrabă decât ieșire, ar putea fi numit un analog al scanf ().
Șirul de control indicat de format este format din trei tipuri de caractere:
- Specificatorii de format
- Simboluri speciale
- Alte personaje (nu speciale)
Specificatorii de format urmează caracterul procentual și spun scanf () ce tip de date să citească în continuare. Codurile specificatorului sunt prezentate în tabel.
Codul | Sens |
---|---|
%Cu | Numărați un caracter |
% d | |
% i | Citiți zecimal întreg |
% e | |
% f | Citiți numărul în virgulă mobilă |
% g | Citiți numărul în virgulă mobilă |
%O | Numărați numărul octal |
% s | Citeste linia |
%X | Citiți numărul hexazecimal |
%R | Citiți indicatorul |
% n | Acceptă o valoare întreagă egală cu numărul de caractere citite până în momentul curent |
% u | Citește un întreg fără semn |
% | Caută un set de caractere |
%% | Citește caracterul % |
De exemplu, % s citește un șir, iar % d citește o variabilă întreagă.
Șirul de format este citit de la stânga la dreapta, mapare între codurile de format și argumentele din lista de argumente.
Caracterele speciale din șirul de control fac ca scanf () să ignore unul sau mai multe caractere speciale în fluxul de intrare. Caracterele speciale sunt spațiu, tabulator sau linie nouă. Un singur caracter special pe o linie de control face ca scanf () să citească, fără a-și aminti, orice număr (inclusiv zero) de caractere speciale învecinate din fluxul de intrare, până când este întâlnit un caracter nespecial.
Prezența unui caracter obișnuit face ca scanf () să citească și să renunțe la caracterul corespunzător. De exemplu, „% d,% d” face ca scanf () să citească un întreg, să citească și să renunțe la virgula și apoi să citească un alt întreg. Dacă caracterul specificat nu este găsit în fluxul de intrare, scanf () se oprește.
Toate variabilele utilizate pentru a primi valori folosind funcția scanf () trebuie căutate după adresele lor. Aceasta înseamnă că toate argumentele funcției trebuie să fie pointeri către variabile. Astfel, C face posibilă trecerea prin referință, iar acest lucru permite funcției să schimbe conținutul argumentului.
Scanf ("% d", & număr);
Șirurile sunt citite în matrice de caractere, iar numele matricei, fără niciun pointer, este adresa primului element din matrice. Prin urmare, pentru a citi un șir în matricea de caractere de adresă, puteți utiliza comanda
Scanf ("% s", adresa);
În acest caz, adresa numelui este deja un pointer și nu are nevoie de prefixul &.
Elementele de date introduse trebuie separate prin spații, file sau linii noi.
Caracterele de punctuație precum virgulă, punct și virgulă etc. nu sunt considerate ca delimitatori. Aceasta înseamnă că pentru operator
Scanf ("% d% d", & r, & c);
Secvența 10 20 va fi acceptată, dar secvența 10.20 nu. Specificatorii de format scanf () sunt în aceeași ordine cu variabilele din lista de argumente cărora le sunt alocate valorile variabilelor primite.
* după % și înainte de specificatorul de format citește datele de tipul specificat, dar suprimă atribuirea. Deci codul
Scanf ("% d% * c% d", & x, & y);
Când introduceți secvența, 10/20 atribuie 10 lui x, elimină / și atribuie 20 lui y.
Comenzile de formatare pot seta modificatorul lățimii maxime a câmpului. Este un număr întreg care este plasat între semnul% și specificatorul de format. Limitează numărul de caractere citite pentru orice câmp. De exemplu, dacă trebuie să citiți nu mai mult de 20 de caractere în matricea de adrese, ați scrie
Scanf ("% 20s", adresa);
Dacă fluxul de intrare conține mai mult de 20 de caractere, atunci la un apel ulterior, funcția de introducere va începe intrarea din punctul în care intrarea a fost oprită în timpul apelului curent. Introducerea câmpului poate fi întreruptă înainte de a atinge lungimea maximă a câmpului dacă se întâlnește un spațiu liber. În acest caz, scanf () trece la câmpul următor.
Deși spațiile, tabulatorii și liniile noi sunt folosite ca separatori de câmp, ele sunt citite ca orice alt caracter atunci când este introdus un singur caracter. De exemplu, având în vedere un flux de intrare x y, funcția
Scanf ("% c% c% c", & a, & b, & c);
Va plasa caracterul x în variabila a, spațiu - în variabila b și y - în variabila c.
Fiți atenți: orice alte caractere din linia de control - inclusiv spații, tabulații și linii noi - sunt folosite pentru a specifica și elimina caracterele din fluxul de intrare. De exemplu, pentru un flux de intrare de 10t20, funcția
Scanf ("% st% s", & x, & y);
Plasează 10 în x și 20 în y. T va fi aruncat deoarece există un t în linia de control.
O altă caracteristică a funcției scanf () se numește scanări multiple. Setul de scanare definește caracterele care vor fi citite de funcția scanf () și alocate elementelor matricei de caractere corespunzătoare. Pentru a specifica un set de scanări, trebuie să puneți caracterele, care sunt valide, între paranteze drepte. Prima paranteză pătrată este precedată de un semn de procent. De exemplu, următoarea listă de seturi de scanare specifică faptul că scanf () citește doar caracterele A, B și C:
Argumentul corespunzător listei de seturi de scanare trebuie să fie un pointer către o matrice de caractere. Când utilizați scanări multiple, funcția scanf () citește caractere și le plasează în matricea specificată până când este întâlnit un caracter care nu este inclus în setul de scanare (adică sunt citite doar caracterele incluse în setul de scanare).
Matricea returnată de scanf () va conține un șir terminat cu nul. Lista simbolurilor care pot fi citite poate fi setată și în formă inversă. Pentru a face acest lucru, plasați ^ ca prim caracter. Apoi scanf () va accepta orice caracter care nu este inclus în setul de scanare.
Folosind ghilimele, puteți specifica intervalul de caractere care trebuie interpretat. De exemplu, următoarea expresie indică scanf () să accepte literele de la A la Z:
O mulțime de scanări fac diferența între litere mari și mici. Dacă doriți ca scanf () să le accepte pe ambele, trebuie să le enumerați separat în setul de scanări.
Funcția scanf () returnează un număr egal cu numărul de câmpuri ale căror valori au fost efectiv atribuite variabilelor. Acest număr nu include câmpurile care au fost citite, dar valorile lor nu au fost atribuite la nimic din cauza utilizării modificatorului * pentru a suprima atribuirea. Dacă apare o eroare înainte de a atribui o valoare primului câmp, este returnat EOF.
Când utilizați Borland C ++ într-un mediu de 16 biți, puteți modifica modelul de memorie implicit pentru compilarea programului dvs. specificând în mod explicit dimensiunea fiecărui pointer folosit la apelarea scanf (). Indicatorul de aproape este specificat de modificatorul N, iar indicatorul de departe de modificatorul F (Nu puteți utiliza modificatorul N dacă programul este compilat pentru modelul de memorie uriașă.)
] SCANF #include