C Academy · Oppitunti

scanf ja syöte

Lue käyttäjän syötettä.

Oppitunti 2/413 vaihetta

scanf ja syöte on ilmainen C Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu C Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. C Academy-kurssilla on yhteensä 4 oppituntia.

Mitä scanf tekee

scanf lukee käyttäjän kirjoittamaa muotoiltua syötettä. Se käyttää samoja määritteitä kuin printf.

#include <stdio.h>
int main(void) {
    int x = 0;
    /* scanf("%d", &x); */
    x = 5;
    printf("x = %d\n", x);
    return 0;
}

Osoitteenotto-operaattori

scanf tarvitsee muuttujan osoitteen, jotta se voi tallentaa arvon siihen. Siksi kirjoitetaan &x.

#include <stdio.h>
int main(void) {
    int x = 42;
    int *p = &x;
    printf("value via address = %d\n", *p);
    return 0;
}

Kokonaisluvun lukeminen

Kokonaisluku luetaan välittämällä %d ja int-muuttujan osoite.

#include <stdio.h>
int main(void) {
    int n;
    /* scanf("%d", &n); */
    n = 7;
    printf("You entered %d\n", n);
    return 0;
}

Liukuluvun lukeminen

Lukekaa float-arvo määritteellä %f ja double-arvo määritteellä %lf.

#include <stdio.h>
int main(void) {
    double d;
    /* scanf("%lf", &d); */
    d = 3.14;
    printf("d = %.2f\n", d);
    return 0;
}

Useiden arvojen lukeminen

Yksi scanf-kutsu voi lukea useita tyhjemerkeillä erotettuja arvoja.

#include <stdio.h>
int main(void) {
    int a, b;
    /* scanf("%d %d", &a, &b); */
    a = 3; b = 4;
    printf("sum = %d\n", a + b);
    return 0;
}

Merkin lukeminen

Käyttäkää %c-määritettä yhden merkin lukemiseen. Huomioikaa, että se lukee myös välilyönnit ja rivinvaihdot.

#include <stdio.h>
int main(void) {
    char c;
    /* scanf(" %c", &c); */
    c = 'X';
    printf("char = %c\n", c);
    return 0;
}

Sanan lukeminen

%s lukee tyhjemerkeillä erotetun sanan char-taulukkoon. &-merkkiä ei tarvita, koska taulukon nimi on jo osoite.

#include <stdio.h>
int main(void) {
    char word[20];
    /* scanf("%s", word); */
    word[0] = 'H'; word[1] = 'i'; word[2] = 0;
    printf("word = %s\n", word);
    return 0;
}

scanf-funktion palautusarvo

scanf palauttaa onnistuneesti luettujen kohteiden määrän. Tarkistakaa palautusarvo virheellisen syötteen havaitsemiseksi.

#include <stdio.h>
int main(void) {
    int n = 5;
    int read = 1; /* pretend scanf returned 1 */
    if (read == 1)
        printf("got %d\n", n);
    return 0;
}

Alussa olevien välilyöntien ohittaminen

Numeeriset määritteet ohittavat alussa olevat tyhjemerkit automaattisesti, mutta %c ei. Välilyönti ennen määritettä %c korjaa tämän.

#include <stdio.h>
int main(void) {
    char c = 'Y';
    printf("Reading with \" %%c\" skips spaces\n");
    printf("c = %c\n", c);
    return 0;
}

Syötteen tarkistaminen

Tarkistakaa aina palautusarvo ennen kuin luotatte tietoihin.

#include <stdio.h>
int main(void) {
    int value = 10;
    int ok = 1;
    if (ok)
        printf("valid: %d\n", value);
    else
        printf("invalid input\n");
    return 0;
}

Kokonaisuuden yhdistäminen

Tyypillinen ohjelma pyytää arvon, lukee sen ja käyttää sitä.

#include <stdio.h>
int main(void) {
    int age;
    printf("Enter age: ");
    /* scanf("%d", &age); */
    age = 20;
    printf("Next year you will be %d\n", age + 1);
    return 0;
}

Pikatarkistus

Testatkaa, miten hyvin ymmärrätte scanf-funktion.

Kertaus: scanf ja syöte

Opitte lukemaan käyttäjän syötettä.

  • scanf käyttää printf-tyylisiä määritteitä
  • Välittäkää &var, jotta funktio tietää tallennuspaikan
  • Käyttäkää %lf-määritettä double-arvoille ja %s-määritettä sanoille
  • Tarkistakaa palautusarvo syötteen kelvollisuuden varmistamiseksi
  • Laittakaa välilyönti ennen %c-määritettä ohittaaksenne tyhjemerkit
Aloita maksutta

Opi C tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
39
Oppitunnit
144

Usein kysytyt kysymykset

Onko oppitunti ”scanf ja syöte” ilmainen?

Kyllä – oppitunnin ”scanf ja syöte” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko C Academy-kurssin, päivitä CoddyKit PROhon. C Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”scanf ja syöte”?

Lue käyttäjän syötettä. Harjoittelet C Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni C Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin C Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”scanf ja syöte”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä C Academy-oppitunnilla?

Kyllä. Jokainen C Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. printf-muotoilumääritteet
  2. scanf ja syöte
  3. Leveys, tarkkuus ja liput
  4. Yleiset I/O-sudenkuopat
← Takaisin: C Academy