Kako je dobro kada su svi podaci dati, a ništa ne treba unositi. Ali, vjerujte mi, to se praktično ne dešava. Sjetite se škole, kada ste mjerili određene stvari, a zatim ste dobivene vrijednosti ubacivali u potrebne formule.
scanf
U jeziku C, pored printf izlazne funkcije, postoji i scanf funkcija za unos. Evo scanf funkcije upravo sada i mi ćemo detaljnije pogledati:
int i;
scanf ("% d", & i);
Izgleda vrlo slično funkciji printf. Također u dvostrukim navodnicima specifikacija formata, ali razlika je u drugom dijelu funkcije. Primijetili ste pojavu znaka (&)? Dakle, ovaj znak znači uzimanje adrese. Odmah ću objasniti zašto je to potrebno.
Unesenu vrijednost moramo napisati ne negdje tamo, već tačno na adresi na kojoj se nalazi naša varijabla. One. unsigned (&) naša unesena vrijednost će ići na sva mjesta osim na ono što nam je potrebno. Stoga, kad god trebate unijeti vrijednosti sa tastature, stavite znak adrese (&) ispred varijable.
Specifikatori formata
Pa sad idemo preko specifikacije formata:- % d - čitanje cijelog broja
- % o - čitanje oktalnog broja
- % x - čitanje heksadecimalnog broja
- % e (% f) - čitanje realnog broja
- % s - čitanje karaktera
- % s - red za čitanje
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);
Nemojte se još baviti radom sa žicama. Zašto nema znakova preuzimanja adrese? Ovu temu ćemo razmotriti malo kasnije.
Operacije poređenja
Bulova logika je prvobitno ugrađena u računar, tj. sve je izgrađeno na 0 i 1. Ako ne razumijete o čemu se radi, onda pogledajte film Matrix, gdje se svaki zeleni screen saver sastoji samo od ova dva magična broja.
Naravno, 0 i 1 su dobri, ali nam je potreban logički smisao, tako da je u logičkim operacijama 0 LAŽ, a 1 TAČNO. Ovi koncepti TAČNO i LAŽNO su usko povezani operacije poređenja... Za početak, evo svih vrsta operacija poređenja:
U osnovi, najčešća greška koju prave početnici je da pomiješaju operaciju dodjele (=). operacija poređenja(==). To su potpuno različite stvari. Ali na početku kodiranja svi imaju greške baš po ovoj osnovi, stoga budite oprezni.
Molimo obustavite AdBlock na ovoj stranici.
Vratimo se na posljednju listu prethodnog koraka:
Listing 1.
#include
Glavni zadatak ovog koraka je naučiti kako dobiti podatke od korisnika.
Za to se može koristiti funkcija scanf. Ona je, kao i funkcija printf, opisana u datoteci zaglavlja stdio.h. Jer već smo ga povezali u prvom redu, onda možemo slobodno koristiti funkciju scanf u našem programu.
Slika 1. Opća sintaksa za scanf.
Dvostruki navodnici označavaju specifikaciju formata. Ovisno o tome u koju varijablu ćemo pohraniti unesenu vrijednost, trebamo koristiti odgovarajući specificator formata.
Osnovni specificatori formata:
% d- cijeli brojevi
% f- stvarni broj tipa float
% lf- realan broj tipa double (zapis lf iz long float)
% c- simbol
Imajte na umu da funkcija scanf koristi različite specifikacije formata za tipove float i double.
Nakon niza formata, potrebno je da navedete adresu varijable na koju želite da sačuvate podatke. Da biste označili adresu varijable, dovoljno je upisati znak & (ampersand) ispred njenog imena, kao na slici iznad.
Na kraju, napišimo program za sabiranje dva broja.
Listing 2.
#include
Kompilirajte i pokrenite ovaj program. Nakon što se program pokrene, čekaće da unesete podatke. Znamo koje podatke trebate unijeti, jer napisali smo ovaj program. Za ostale korisnike koji neće vidjeti programski kod, bilo bi lijepo da se na ekranu prikaže nagoveštaj koje podatke da unese. Pogledajte kako se to radi u sljedećem primjeru.
Ovaj program će biti koristan za one koji prate svoje zdravlje. Ovaj program izračunava vaš bazalni metabolizam koristeći Mifflin-Saint Geor formulu na osnovu podataka koje unesete (starost, visina i težina).
Listing 3.
#include
U stvari, funkcija scanf je funkcija za unos formata. Gotovo je složeniji od printf-a. Ali pričati novajliji o posebnostima njenog posla znači uzaludno ga opterećivati nepotrebnim informacijama. U ovoj fazi će vam ovo znanje biti dovoljno, a kada bude potrebno koristiti nešto više, možete sami shvatiti. Ili ću ti možda reći na nekoj lekciji.
Standardna biblioteka C / C ++ uključuje niz funkcija za čitanje i pisanje na konzolu (tastatura i monitor). Ove funkcije čitaju i pišu podatke kao jednostavan tok znakova.
Koncept toka (stream), koji se koristi u programiranju, usko je povezan sa uobičajenim, svakodnevnim razumijevanjem riječi. Ulazni tok se može uporediti sa cijevi kroz koju voda (informacija) ulazi u bazen (kompjuterska memorija), izlazni tok - s cijevi kroz koju voda izlazi iz bazena. Važna karakteristika ove cijevi je da se podaci mogu kretati samo u jednom smjeru u isto vrijeme. Čak i ako se ista cijev koristi za ulaz i izlaz, to se ne može dogoditi u isto vrijeme: da bi se promijenio smjer protoka, mora se zaustaviti, izvršiti neke radnje i tek tada se tok mora usmjeriti u suprotnom smjeru . Još jedna karakteristika potoka je da gotovo nikada ne presuši. Ponekad presuši, ali ovaj period ne može biti dug ako sistem ispravno funkcioniše.
Standardna izlazna funkcija printf ()
Funkcija printf () je standardna izlazna funkcija. Koristeći ovu funkciju, možete prikazati niz znakova, broj, vrijednost varijable...
Funkcija printf () ima prototip u datoteci stdio.h
int printf (char * kontrolni niz, ...);
Ako je uspješna, funkcija printf () vraća broj ispisanih znakova.
Kontrolni niz sadrži dvije vrste informacija: znakove, koji se štampaju direktno na ekran, i specifikacije formata, koji određuju kako da se prikazuju argumenti.
Funkcija printf () je formatirana izlazna funkcija. To znači da u parametrima funkcije morate specificirati format podataka koji će biti izlazni. Format podataka je naznačen specifikacijama formata. Specifikator formata počinje sa znakom % nakon kojeg slijedi kod formata.
Specifikatori formata:
%Sa | simbol |
% d | cijeli decimalni broj |
% i | cijeli decimalni broj |
% e | decimalni broj u obliku x.xx e + xx |
% E | decimalni broj u obliku x.xx E + xx |
% f | |
% F | decimalni pokretni zarez xx.xxxx |
% g | % f ili% e, što je kraće |
% G | % F ili % E, šta god je kraće |
% o | oktalni broj |
% s | niz znakova |
% u | decimalni broj bez predznaka |
% x | heksadecimalni broj |
% X | heksadecimalni broj |
%% | simbol % |
% str | pokazivač |
% n | pokazivač |
Dodatno, modifikatori l i h mogu se primijeniti na komande formatiranja.
% ld | dugi int print |
% hu | kratki nepotpisani otisak |
% Lf | duga dvostruka štampa |
U specifikaciji formata, preciznost (broj cifara nakon decimalnog zareza) može se navesti iza simbola %. Preciznost se postavlja na sljedeći način:% .n<код формата>... Gdje je n broj cifara iza decimalnog zareza, i<код формата>- jedan od gore navedenih kodova.
Na primjer, ako imamo varijablu x = 10,3563 tipa float i želimo prikazati njenu vrijednost s preciznošću do 3 znamenke nakon decimalnog zareza, tada bi trebali napisati:
printf ("Varijabla x =% .3f", x);
rezultat:
Varijabla x = 10,356
Takođe možete odrediti minimalnu marginu za štampanje. Ako je linija ili broj veći od navedene širine polja, tada se ispisuje cijeli red ili broj.
Na primjer, ako napišete:
printf ("% 5d", 20);
tada će rezultat biti sljedeći:
20
Imajte na umu da broj 20 nije ispisan od samog početka reda. Ako želite da se neiskorišteni prostori polja popune nulama, onda morate staviti znak 0 ispred širine polja.
Na primjer:
printf ("% 05d", 20);
rezultat:
00020
Pored specifikacija formata podataka, kontrolni niz može sadržavati kontrolne znakove:
\ b | BS, donja rupa |
\ f | Nova stranica, prijevod stranice |
\ n | Novi red, prijelaz na red |
\ r | Povrat kočije |
\ t | Horizontalna kartica |
\ v | Vertikalna kartica |
\" | Dvostruki citat |
\" | Apostrof |
\\ | Povratna kosa crta |
\0 | Null karakter, null bajt |
\ a | Signal |
\ N | Oktalna konstanta |
\ xN | Heksadecimalna konstanta |
\? | Upitnik |
Najčešće ćete koristiti znak \n. Pomoću ovog kontrolnog karaktera moći ćete pomicati liniju. Pogledajte primjere programa i sve ćete razumjeti.
Primjeri programa.
/ * Primjer 1 * /
#include
void main (void)
{
int a, b, c; // Deklarisanje varijabli a, b, c
a = 5;
b = 6;
c = 9;
printf ("a =% d, b =% d, c =% d", a, b, c);
}
Rezultat programa:
a = 5, b = 6, c = 9
/ * Primjer 2 * /
#include
void main (void)
{
float x, y, z;
X = 10,5;
y = 130,67;
z = 54;
Printf ("Koordinate objekta: x:%. 2f, y:%. 2f, z:%. 2f", x, y, z);
}
Rezultat programa:
Koordinate objekta: x: 10,50, y: 130,67, z: 54,00
/ * Primjer 3 * /
#include
void main ()
{
int x;
X = 5;
printf ("x =% d", x * 2);
}
Rezultat programa:
x = 10
/ * Primjer 4 * /
#include
void main (void)
{
printf ("\" Tekst u navodnicima \ "");
printf ("\ nSadržaj kiseonika: 100 %%");
}
Rezultat programa:
"Tekst pod navodnicima"
Sadržaj kiseonika: 100%
/ * Primjer 5 * /
#include
void main (void)
{
int a;
A = 11; // 11 decimala jednako je b heksadecimalno
printf ("a-dec =% d, a-hex =% X", a, a);
}
Rezultat programa:
a-dec = 11, a-hex = b
/ * Primjer 6 * /
#include
void main (void)
{
char ch1, ch2, ch3;
Ch1 = "A";
ch2 = "B";
ch3 = "C";
Printf ("% c% c% c", ch1, ch2, ch3);
}
Rezultat programa:
ABC
/ * Primjer 7 * /
#include
void main (void)
{
char * str = "Moj string.";
Printf ("Ovo je% s", str);
}
Rezultat programa:
Ovo je moja linija.
/ * Primjer 8 * /
#include
void main (void)
{
printf ("Zdravo! \ n"); // Nakon ispisa, bit će novi red - \ n
printf ("Zovem se Pavel."); // Ovo će biti ispisano u novom redu
}
Rezultat programa:
Zdravo!
Moje ime je Pavel.
Scanf () standardna funkcija unosa
Funkcija scanf () je formatirana funkcija unosa. Uz njegovu pomoć možete unositi podatke sa standardnog uređaja za unos (tastatura). Ulazni podaci mogu biti cijeli brojevi, brojevi s pomičnim zarezom, znakovi, nizovi i pokazivači.
Funkcija scanf () ima sljedeći prototip u datoteci stdio.h:
int scanf (char * kontrolni niz);
Funkcija vraća broj varijabli kojima je dodijeljena vrijednost.
Kontrolni niz sadrži tri vrste znakova: specifikacije formata, razmake i druge znakove. Specifikatori formata počinju sa% znakom.
Specifikatori formata:
Prilikom unosa niza pomoću funkcije scanf () (specifikator formata% s), string se unosi prije prvog razmaka !! one. ako unesete u red "Zdravo svijet!" koristeći funkciju scanf ().
scanf ("% s", str);
tada će se nakon unosa rezultujući string, koji će biti pohranjen u nizu str, sastojati od jedne riječi "Hello". FUNKCIJA UMETA RED PRED PRVOG RAZMAKA! Ako želite unositi redove s razmacima, onda koristite funkciju
char * dobija (char * buf);
Pomoću funkcije gets () možete unijeti pune nizove. Funkcija gets () čita znakove sa tastature sve dok se ne pojavi znak novog reda (\ n). Sam karakter novog reda pojavljuje se kada pritisnete enter. Funkcija vraća pokazivač na buf. buf je bafer (memorija) za ulazni niz.
Iako je gets () izvan okvira ovog članka, hajde da napišemo primjer programa koji vam omogućava da unesete cijeli red s tastature i prikažete ga na ekranu.
#include
void main (void)
{
char buffer; // niz (bafer) za ulazni niz
Gets (bafer); // unesite red i pritisnite enter
printf ("% s", bafer); // prikazuje unesenu liniju na ekranu
}
Još jedna važna napomena! Da biste unijeli podatke pomoću funkcije scanf (), morate im kao parametre proslijediti adrese varijabli, a ne same varijable. Da biste dobili adresu varijable, morate staviti znak & (ampersand) ispred imena varijable. Znak & znači preuzimanje adrese.
Šta znači adresa? Pokušaću da objasnim. Imamo varijablu u programu. Varijabla pohranjuje svoju vrijednost u memoriju računara. Dakle, adresa koju dobijamo sa & je adresa u memoriji računara gde je pohranjena vrednost varijable.
Pogledajmo primjer programa koji nam pokazuje kako koristiti &
#include
void main (void)
{
int x;
Printf ("Unesite varijablu x:");
scanf ("% d", & x);
printf ("Varijabla x =% d", x);
}
Sada se vratimo na scanf () kontrolnu liniju. opet:
int scanf (char * kontrolni niz);
Znak za razmak u kontrolnoj liniji upućuje da se preskoči jedan ili više razmaka u ulaznom toku. Osim razmaka, može se uočiti tabulator ili znak novog reda. Znak različit od nule označava čitanje i odbacivanje ovog znaka.
Ograničenja između dva unesena broja su razmak, tabulator ili novi red. Znak * iza % i prije koda formata (specifikator formata) upućuje na čitanje podataka navedenog tipa, ali ne dodjeljuje ovu vrijednost.
Na primjer:
scanf ("% d% * c% d", & i, & j);
upisivanjem 50 + 20 postavit će se i na 50, j na 20, a + će biti pročitan i zanemaren.
Naredba format može odrediti najveću širinu polja za čitanje.
Na primjer:
scanf ("% 5s", str);
označava da li treba pročitati prvih 5 znakova iz ulaznog toka. Ako unesete 1234567890ABC, str niz će sadržavati samo 12345, a ostali znakovi će biti zanemareni. Razdjelnici: razmak, tabulator i novi red - kada se ukucaju, tretiraju se kao i svi ostali znakovi.
Ako se u kontrolnom nizu nađu bilo koji drugi znakovi, oni su namijenjeni da identifikuju i preskoče odgovarajući znak. Tok znakova 10plus20 po operateru
scanf ("% dplus% d", & x, & y);
će postaviti x na 10, y na 20 i preskočiti znakove plus jer se pojavljuju u kontrolnoj liniji.
Jedna od moćnih karakteristika funkcije scanf () je mogućnost specificiranja skupa skeniranja. Skup za pretraživanje definira skup znakova s kojim će se upoređivati znakovi pročitani funkcijom scanf (). Funkcija scanf () čita znakove sve dok se pojavljuju u skupu pretraživanja. Čim se uneseni znak ne pojavi u skupu pretraživanja, scanf () prelazi na sljedeći specificator formata. Skup pretraga je određen listom znakova u uglastim zagradama. Otvorenoj zagradi prethodi znak %. Pogledajmo ovo na primjeru.
#include
void main (void)
{
char str1, str2;
scanf ("%% s", str1, str2);
printf ("\ n% s \ n% s", str1, str2);
}
Hajde da predstavimo skup simbola:
12345abcdefg456
Na ekranu će program prikazati:
12345
abcdefg456
Kada navedete skup pretraga, možete koristiti i znak crtice da odredite razmak, kao i maksimalnu širinu polja za unos.
scanf ("% 10", str1);
Također možete definirati znakove koji nisu uključeni u skup pretraživanja. Prvom od ovih znakova prethodi ^. Skup znakova razlikuje mala i velika slova.
Dozvolite mi da vas podsjetim da kada koristite funkciju scanf (), morate joj proslijediti adrese varijabli kao parametre. Kod iznad je napisan:
char str; // niz od 80 znakova
scanf ("% s", str);
Imajte na umu da str ne prethodi &. To je zato što je str niz, a ime niza, str, je pokazivač na prvi element niza. Stoga se znak & ne koristi. Već prosljeđujemo adresu scanf-u (). Pa, jednostavno rečeno, str je adresa u memoriji računara na kojoj će biti pohranjena vrijednost prvog elementa niza.
Primjeri programa.
Primjer 1.
Ovaj program prikazuje upit "Koliko imaš godina?:" i čeka da se unesu podaci. Ako, na primjer, unesete broj 20, program će prikazati redak "Imate 20 godina". Prilikom pozivanja funkcije scanf () stavljamo znak & ispred varijable age, pošto funkcija scanf () treba adrese varijabli. Funkcija scanf () će zapisati unesenu vrijednost na navedenu adresu. U našem slučaju, unesena vrijednost 20 biće upisana na adresu varijable starosti.
/ * Primjer 1 * /
#include
void main (void)
{
int age;
Printf ("\ nKoliko imaš godina?:");
scanf ("% d", & starost);
printf ("Imaš % d godina.", starost);
}
Primjer 2.
Program kalkulatora. Ovaj kalkulator može samo sabirati brojeve. Ako unesete 100 + 34, program će dati rezultat: 100 + 34 = 134.
/ * Primjer 2 * /
#include
void main (void)
{
int x, y;
Printf ("\ nKalkulator:");
scanf ("% d +% d", & x, & y);
printf ("\ n% d +% d =% d", x, y, x + y);
}
Primjer 3.
Ovaj primjer pokazuje kako postaviti širinu očitavanja. U našem primjeru, širina polja je pet znakova. Ako unesete niz sa velikim brojem znakova, tada će svi znakovi nakon 5. biti odbačeni. Obratite pažnju na poziv funkcije scanf (). Znak & ne prethodi imenu imena niza jer je ime niza adresa prvog elementa u nizu.
/ * Primjer 3 * /
#include
void main (void)
{
char ime;
Printf ("\ nUnesite svoje korisničko ime (ne više od 5 karaktera):");
scanf ("% 5s", ime);
printf ("\ nUneli ste% s", ime);
}
Primjer 4.
Posljednji primjer u ovom članku pokazuje kako možete koristiti višestruka pretraživanja. Nakon pokretanja programa unesite broj od 2 do 5.
/ * Primjer 4 * /
#include
void main (void)
{
char bal;
Printf ("Vaša ocjena je 2,3,4,5:");
scanf ("%", & bal);
printf ("\ nEvaluation% c", bal);
}
Funkcija scanf () je rutina za unos opće namjene koja čita podatke iz stdin toka. Može čitati podatke svih osnovnih tipova i automatski ih pretvarati u željeni interni format. Ako je printf () vršio unos umjesto izlaza, mogao bi se nazvati analogom scanf ().
Kontrolni niz na koji ukazuje format sastoji se od tri vrste znakova:
- Specifikatori formata
- Posebni simboli
- Ostali znakovi (nisu posebni)
Specifikatori formata prate znak postotka i govore scanf-u () koju vrstu podataka da čita sljedeće. Kodovi specifikacija su prikazani u tabeli.
Šifra | Značenje |
---|---|
%Sa | Brojite jedan znak |
% d | |
% i | Čitanje cjelobrojne decimale |
% e | |
% f | Pročitajte broj u pokretnom zarezu |
% g | Pročitajte broj u pokretnom zarezu |
%O | Brojite oktalni broj |
% s | Pročitaj liniju |
%X | Pročitaj heksadecimalni broj |
%R | Pokazivač čitanja |
% n | Prihvata cjelobrojnu vrijednost jednaku broju znakova pročitanih do trenutnog trenutka |
% u | Čita cijeli broj bez predznaka |
% | Traži skup znakova |
%% | Čita % znak |
Na primjer, % s čita string, a % d čita cjelobrojnu varijablu.
Niz formata se čita s lijeva na desno, mapirajući između kodova formata i argumenata iz liste argumenata.
Posebni znakovi u kontrolnom nizu uzrokuju da scanf () preskoči jedan ili više specijalnih znakova u ulaznom toku. Posebni znakovi su razmak, tabulator ili novi red. Jedan specijalni znak na kontrolnoj liniji uzrokuje da scanf () čita, bez pamćenja, bilo koji broj (uključujući nulu) uzastopnih specijalnih znakova iz ulaznog toka, sve dok se ne naiđe na nespecijalni znak.
Prisustvo regularnog znaka uzrokuje da scanf () pročita i odbaci odgovarajući znak. Na primjer, "% d,% d" uzrokuje da scanf () pročita cijeli broj, pročita i odbaci zarez, a zatim pročita drugi cijeli broj. Ako se navedeni znak ne pronađe u ulaznom toku, scanf () se zaustavlja.
Sve varijable koje se koriste za primanje vrijednosti pomoću funkcije scanf () moraju se tražiti po njihovim adresama. To znači da svi argumenti funkcije moraju biti pokazivači na varijable. Dakle, C omogućava prolazak po referenci, a to omogućava funkciji da promijeni sadržaj argumenta.
Scanf ("% d", & count);
Nizovi se čitaju u nizove znakova, a ime niza, bez ikakvog pokazivača, je adresa prvog elementa u nizu. Stoga, da biste pročitali string u nizu znakova adrese, možete koristiti naredbu
Scanf ("% s", adresa);
U ovom slučaju, adresa imena je već pokazivač i ne treba prefiks &.
Stavke ulaznih podataka moraju biti odvojene razmacima, tabulatorima ili novim redovima.
Znakovi interpunkcije kao što su zarez, tačka i zarez, itd. ne smatraju se graničnicima. To znači da za operatera
Scanf ("% d% d", & r, & c);
Slijed 10 20 će biti prihvaćen, ali sekvenca 10.20 neće. Specifikatori formata scanf () su u istom redoslijedu kao i varijable u listi argumenata kojima su dodijeljene vrijednosti primljenih varijabli.
* iza% i prije specifikacija formata čita podatke navedenog tipa, ali potiskuje dodjelu. Dakle, kod
Scanf ("% d% * c% d", & x, & y);
Kada unesete sekvencu, 10/20 dodjeljuje 10 x, odbacuje / i dodjeljuje 20 y.
Naredbe za formatiranje mogu postaviti modifikator maksimalne širine polja. To je cijeli broj koji se nalazi između znaka % i specifikacije formata. Ograničava broj pročitanih znakova za bilo koje polje. Na primjer, ako trebate pročitati ne više od 20 znakova u adresni niz, napisali biste
Scanf ("% 20s", adresa);
Ako ulazni tok sadrži više od 20 znakova, tada će u sljedećem pozivu funkcija unosa započeti unos od tačke na kojoj je unos zaustavljen tokom trenutnog poziva. Unos polja se može prekinuti prije dostizanja maksimalne dužine polja ako se naiđe na prazno polje. U ovom slučaju scanf () prelazi na sljedeće polje.
Iako se razmaci, tabulatori i novi redovi koriste kao separatori polja, oni se čitaju kao i svaki drugi znak kada se unese jedan znak. Na primjer, dat je ulazni tok x y, funkcija
Scanf ("% c% c% c", & a, & b, & c);
Staviće znak x u promenljivu a, razmak - u promenljivu b i y - u promenljivu c.
Budite oprezni: svi drugi znakovi u kontrolnoj liniji — uključujući razmake, tabulatore i nove redove — koriste se za specificiranje i uklanjanje znakova iz ulaznog toka. Na primjer, za ulazni tok od 10t20, funkcija
Scanf ("% st% s", & x, & y);
Mjesta 10 u x i 20 u y. t će biti odbačen jer postoji t u kontrolnoj liniji.
Još jedna karakteristika funkcije scanf () naziva se višestruko skeniranje. Skup za skeniranje definira znakove koje će čitati funkcija scanf () i dodijeliti elementima odgovarajućeg niza znakova. Da biste odredili skup skeniranja, morate staviti znakove koji su važeći u uglaste zagrade. Prvoj uglastoj zagradi prethodi znak procenta. Na primjer, sljedeća lista skupova skeniranja navodi da scanf () čita samo znakove A, B i C:
Argument koji odgovara listi skupa skeniranja mora biti pokazivač na niz znakova. Kada koristite višestruko skeniranje, funkcija scanf () čita znakove i postavlja ih u navedeni niz sve dok se ne naiđe na znak koji nije uključen u skup skeniranja (to jest, čitaju se samo znakovi uključeni u skup za skeniranje).
Niz koji vraća scanf () će sadržavati niz završen nultom. Lista čitljivih simbola također se može postaviti u inverznom obliku. Da biste to učinili, postavite ^ kao prvi znak. Tada će scanf () prihvatiti bilo koji karakter koji nije uključen u set za skeniranje.
Koristeći navodnike, možete odrediti raspon znakova koji će se tumačiti. Na primjer, sljedeći izraz upućuje scanf () da prihvati slova od A do Z:
Mnogo skeniranja razlikuje velika i mala slova. Ako želite da scanf () prihvati oba, morate ih navesti zasebno u skupu skeniranja.
Funkcija scanf () vraća broj jednak broju polja čije su vrijednosti zapravo dodijeljene varijablama. Ovaj broj ne uključuje polja koja su pročitana, ali njihove vrijednosti nisu dodijeljene ničemu zbog upotrebe modifikatora * za suzbijanje dodjele. Ako dođe do greške prije dodjeljivanja vrijednosti prvom polju, vraća se EOF.
Kada koristite Borland C ++ u 16-bitnom okruženju, možete promijeniti zadani memorijski model za kompajliranje vašeg programa eksplicitnim specificiranjem veličine svakog pokazivača koji se koristi prilikom poziva scanf (). Bliski pokazivač je određen modifikatorom N, a pokazivač udaljenim F modifikatorom (Ne možete koristiti N modifikator ako je program kompajliran za model ogromne memorije.)
] SCANF #include