Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Vain numeroita (C)

Jorgga [07.10.2006 18:19:34]

#

Tutkiskelin haulla että löytyisikö ongelmaan apua mutta ei löytynyt eli päätän kysäistä: Minulla on siis muuttuja valikko joka on asetettu int:llä luvuiksi ja kun skannataan scanf-komennolla niin pitäisi saada niin että se ei hyväksy kun vain numeroita/numerosarjoja sillä jos siihen laittaa kirjaimen sen pitäisi alnaa ilmoitus: "Anna oikea valikko vaihtoehto" ja sen jälkeen se jää siihen jumittamaan... missä olisi vika?

Sama vika tulee jos muuttuja on char

Metabolix [07.10.2006 18:26:46]

#

Noin käy, koska %i ja %d tarkoittavat formaatissa kokonaislukua. Teepä vaikka näin:

if (scanf("%i", &luku) != 1) {
    /* Saatiin luettua jotakin muuta kuin yksi luku (eli todennäköisesti nolla lukua). Luetaan seuraava sana pois puskurista... %s = string = tekstiä, yksi sana. * = ei tallenneta. */
    scanf("%*s");
}

Jorgga [07.10.2006 18:41:43]

#

Muuten hyvä mutta nyt jos pistän vaikka 1 ja enter se pistää uuden rivin ja sitten kun siihen laittaa munkä tahansa merkin se menee eteenpäin... mutta jos laitan esim. 1a niin menee suoraan...

Edit: Olin unohtanut ottaa vanhan scanf komennon pois ja nyt toimii kiitos.

Antti Laaksonen [07.10.2006 18:41:45]

#

Tässä vielä sama laajennettuna ohjelmaksi:

#include <stdio.h>

int main(void) {
    int luku;

    while (1) {
        printf("Kirjoita valinta: ");

        if (scanf("%i", &luku) != 1) {
            scanf("%*s");
        } else {
            if (luku > 0 && luku < 10) break;
        }

        printf("Kirjoita kunnollinen luku!\n");
    }

    printf("Valinta: %i\n", luku);

    return 0;
}

Nyt ohjelma kysyy valintaa, kunnes käyttäjä antaa luvun 1 - 9.

Jorgga [07.10.2006 18:45:21]

#

Kiitos molemmille. :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta