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
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"); }
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.
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.
Kiitos molemmille. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.