scanf()-funktio
scanf-funktiolla voidaan syöttää tietoa ohjelman muuttujille:
No Formatcode |
---|
scanf("tyypin muotoilumuotoilumerkkijono", muuttujan1_osoite, muuttujan2_osoite, ...); |
tyypin muotoilu, jossa muotoilumerkkijono muodostuu seuraavista (yhdestä tai useammasta):
muotoilu | tyyppi | selitys |
---|---|---|
%c | char | yksi merkki |
%s | char[] | merkkijono (päättyy NULL-merkkiin) |
%d | int | kokonaisluku |
%i | int | kokonaisluku |
%u | unsigned int | etumerkitön kokonaisluku |
%l | long | pitkä kokonaisluku |
%f | float | reaaliluku |
%lf | double | kaksoistarkkuuden reaaliluku |
, ja muuttujanX_osoite annetaan muodossa:
Code Block |
---|
scanf(... , &Muuttuja); // &-merkin avulla saadaabn muuttujan osoite luettua.
|
Esimerkkejä
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.
Yhden kokonaisluvun lukeminen käyttäjältä:
No Formatcode |
---|
int Luku; printf("Anna jokin luku: "); scanf("%d", &Luku); |
Sadan merkin merkkijonon lukeminen käyttäjältä:
No Formatcode |
---|
char Merkkeja[101]; // viimeinen merkki, 101. merkki on varattu lopettavalle NULL-merkille. printf("Anna merkkejä. max 100: "); scanf("%s", Merkkeja); |
scanf()-funktiolla voidaan myös kysellä useita asioita samalla kertaa:
No Formatcode |
---|
scanf("%s %d", Merkkeja, &luku);
|
Merkkeja-muuttujan eteen ei laiteta &-merkkiä, koska se on jo osoite merkkijonoon. (Taulukon nimi on aina osoitin taulukon alkuun).