...
scanf()-funktio
...
scanf-funktiolla
...
voidaan
...
syöttää
...
tietoa
...
ohjelman
...
muuttujille:
Code Block |
---|
} scanf("muotoilumerkkijono", muuttujan1_osoite, muuttujan2_osoite, ...); {code} |
,
...
jossa
...
muotoilumerkkijono
...
muodostuu
...
seuraavista
...
(yhdestä
...
tai
...
useammasta):
muotoilu | tyyppi | selitys | ||
---|---|---|---|---|
%c | char/int | yksi merkki | ||
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="601b0c8f-10df-41c2-bd56-fa2dca29e400"><ac:plain-text-body><![CDATA[ | %s | char[] | merkkijono (päättyy NULL-merkkiin) | ]]></ac:plain-text-body></ac:structured-macro> |
%d | int/char | kokonaisluku | ||
%i | int/char | kokonaisluku | ||
%u | unsigned int/unsigned char | etumerkitön kokonaisluku | ||
%l | long | pitkä kokonaisluku | ||
%f | float | reaaliluku | ||
%lf | double | kaksoistarkkuuden reaaliluku |
, ja muuttujanX_osoite annetaan muodossa:
Code Block |
---|
|| muotoilu || tyyppi || selitys || | %c | char/int | yksi merkki | | %s | char\[\] | merkkijono (päättyy NULL-merkkiin) | | %d | int/char | kokonaisluku | | %i | int/char | kokonaisluku | | %u | unsigned int/unsigned char | etumerkitön kokonaisluku | | %l | long | pitkä kokonaisluku | | %f | float | reaaliluku | | %lf | double | kaksoistarkkuuden reaaliluku | , ja _muuttujanX_osoite_ annetaan muodossa: {code} scanf(... , &Muuttuja); // &-merkin avulla saadaan muuttujan osoite luettua. {code} h4. Lukemisen päättyminen |
Lukemisen päättyminen
scanf()-funktiossa
...
numeerisen
...
tiedon
...
(int,
...
float)
...
lukeminen
...
päättyy
...
merkkiin,
...
joka
...
ei
...
ole
...
luku
...
(float
...
hyväksyy
...
myös
...
desimaalipisteen).
...
Luvun
...
edessä
...
voi
...
olla
...
välilyöntejä,
...
sarkainmerkkejä
...
tai
...
rivinvaihtoja.
...
Jos
...
ohjelmassa
...
luetaan
...
merkkitietoa
...
(char),
...
ohjelma
...
tulkitsee
...
kaikki
...
näppäimenpainallukset
...
(myös
...
välilyönnit)
...
merkeiksi.
Esimerkkejä
Yhden kokonaisluvun lukeminen käyttäjältä:
Code Block |
---|
h3. Esimerkkejä Yhden kokonaisluvun lukeminen käyttäjältä: {code} int Luku; printf("Anna jokin luku: "); scanf("%d", &Luku); {code} |
Sadan
...
merkin
...
merkkijonon
...
lukeminen
...
käyttäjältä:
Code Block |
---|
} char Merkkeja[101]; // viimeinen merkki, 101. merkki on varattu lopettavalle NULL-merkille. printf("Anna merkkejä. max 100: "); scanf("%s", Merkkeja); {code} |
scanf()-funktiolla
...
voidaan
...
myös
...
kysellä
...
useita
...
asioita
...
samalla
...
kertaa:
Code Block |
---|
} scanf("%s %d", Merkkeja, &luku); {code} _Merkkeja_\ |
Merkkeja-muuttujan
...
eteen
...
ei
...
laiteta
...
&-merkkiä,
...
koska
...
se
...
on
...
jo
...
osoite
...
merkkijonoon.
...
(Taulukon
...
nimi
...
on
...
aina
...
osoitin
...
taulukon
...
alkuun).
...
Huom
...
!
...
scanf
...
ottaa
...
aina
...
parametrikseen
...
muuttujan
...
osoitteen
...
ja
...
siksi
...
scanf()-funktion
...
kanssa
...
kannattaa
...
olla
...
hyvin
...
varovainen,
...
jos
...
ohjelman
...
käyttäjä
...
antaa
...
esimerkiksi
...
lukua
...
kysyttäessä
...
kirjaimen,
...
todennäköisesti
...
ohjelma
...
"kaatuu",
...
ellei
...
käyttäjän
...
antamia
...
syötteitä
...
tarkasteta.