mitenkäs c :ssa saa tarkistettua onko käyttäjän antama syöte luonnollinen kokonaisluku, eikä esim. desimaaliluku tai ihan vaan jokin tekstin pätkä?
yksinkertainen ongelma
aivan pihalla
5533
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 5
Vanhimmat
Sinun on rakennettava yksinkertainen parseri joka testaa syötetyn tekstistringin.
Lue ensin syöte tekstipuskuriin esim char buf[256];
Yritä sitten esim scan() lukea kokonaislukua puskurista kokonaislukumuuttujaan (int tai long). Jos tulee virhekoodi, kyseessä ei ole kokonaisluku.
Vastaavalla tavalla testaat desimaalilukua (eli lukemalla puskurista float tai double muuttujaan). Jos tulee virhekoodi, syöte on tekstimuuttuja (jonka sisältö sijaitsee puskurissa buf).
ensinnäkin tuo on C:tä vaikka toimii kyllä C ohjelmassa luulisin. mutta jos haluat että luetaan cin >> muuttuja niin lukaseppas nuo linkit tuolta alempaa. katso tuosta ylemmästä linkis niitä alimpia koodeja
http://cplus.about.com/od/cprogrammingtip1/l/aa030702b.htm
http://appro.mit.jyu.fi/2002/kesa/johdatusohjelmointiin/luennot/luento10/iotest.cpp
noi kannattaa kattoa läpi tuollaisia löysin googlella niistä löytyy ohjeet miten saat luettua turvallisesti kirjaimien varalta ja väärän kokoisen numeron syöttämiseltä...
http://appro.mit.jyu.fi/2002/kesa/johdatusohjelmointiin/luennot/luento10/
helpot ja selkeet ohjeet
string syote;
int luku = 0;
cin >> luku;
istringstream virta(luku);
if ( !virta >> luku )
{
cout
string syote;
int luku = 0;
cin >> syote;
istringstream virta(syote);
if ( !virta >> luku )
{
cout