Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

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

...

Code Block
scanf(... , &Muuttuja); // &-merkin avulla saadaabnsaadaan muuttujan osoite luettua.

Esimerkkejä

Lukemisen päättyminen

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.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
 
int Luku;
printf("Anna jokin luku: ");
scanf("%d", &Luku);

...

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.