Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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).