Enpä tunne kieltä tarpeeksi, mutta eikös se stringin voi vain (tyhjien poiston jälkeen) yrittää konvertoida INT:ksi? Jos ei pääty virheeseen, niin on oikein. Virheellä taas mennään virheenkäsittelyn alirutiiniin - mikä se se sitten onkaan näille tapauksille (jos on useita samanlaisia, jotka voi hoitaa vain eri parametrillä, muutoin tälle on vain oma rutiininsa).
varmaan toi stringistä intiksi muunnosmetodi palauttaa intin, ja en tiedä, jos se olisi boolean tyyppinen palautusarvo, että jos muunto onnistuu, niin sitten tämä olisi ratkaistavissa sillä, mutta en tiedä mitä arvoja atoi-palauttaa, jos muunnos epäonnistuu jostain syystä. Katsoin Tutorialspointista Google-haulla "C language refence atoi" -hakutermillä, niin Tutorialspointissa metodin määrittely APIssa on seuraava
int atoi(const char *str)
Kyseisessä artikkelissa ei kerrota, mikä palautusarvo sitten on, jos muunto epäonnistuu. joku intti se on, mutta mikä, tiedostonluvussa yleensä on -1 sitten kun EOF -saavutetaan, mutta -1 on validi arvo, joka sijoittuu int-primaarimuuttujan arvo-alueeseen, joten se ei ole se tässä tilanteessa. Tietenkin voisi kokeilla, mitä se palauttaa ja käyttää tarkistuksessa sitä arvoa, jos se on jokin nullin kaltainen.
Tuo ohjelmanihan toimii vain niissä tapauksissa ongelmitta, jossa käyttäjä toimii "rehellisesti" annettujen sääntöjen ja puitteiden rajoissa, että antaa positiivisen kokonaisluvun, mutta siihen pitäisi vielä lisätä kaksi tarkistusta, eli tuo int-tyypin tarkistus, ja sen jälkeen vielä että luku on positiivinen, tai suurempi kuin 0, koska negatiivisista luvuista ei voi kertomaa laskea. Liukuluku-syötekään tuota niin paljon ongelmia, kuin aakkos- tai erikoismerkkipohjainen syöte.
Tietysti, jos tarkistaisi, että syöte on etumerkitön int, niin se poissulkisi -0 ja muut negatiiviset luvut, mutta juuri se kysymys, että onko sitä miten mahdollista varmistua siitä, että käyttäjä syöttää nimenomaan int-tyyppisen positiivisen luvun.
Tämä on juuri tätä poikkeus-ja ongelatilanteiden ohjelmointia, jolla ei itsessään ohjelmoinnin oppimisen kannalta ole juuri muuta merkitystä, muuta kuin jos teollisuuskoodaauksessa kuluu juuri tämän kaltaisiin paljon aikaa, kun pitää ajatella loppukäyttäjän näkökulmasta.