Onko mahdollista c -kielellä, jotenkin aakkosia/erikoismerkkejä/numeroita, yhdellä muuttujalla. Itse ongelma minulla on se kun on takoituksena kysyy käyttäjältä vain numeroita ja jos käyttäjä syöttää jotain muuta kuin numeroita niin ohjelma menee sekaisin. voiko jotenkin välttää sen..?
c++, aakkoset, numerot..?
jeesjeeeees
5703
0Äänestä
Vastaukset 5
Vanhimmat
Kirjoita vähän virheensietokoodia tarkastamalla onko saatu syöte haluttua tyyppiä :P
esim.
if(syöte =! haluttuTyyppi)
{
...
//toimenpiteet,
//vaikkapa ilmoitus käyttäjälle että virheellinen //syöte!
}
maski on tuossa hyvä ja niitähän on c : ssa iha erikseen maskauskelpoisia edittejä, joihin voi laittaa kustomoidun maskin, että ei pääse pöljä käyttäjä näppäileen mitä sattuu kenttiin.
http://www-ccs.ucsd.edu/c/ctype.html
if (isdigit(merkki) != 0) {
}
suoraan numeromuuttujaan (int, float..) vaan lue se merkkipuskuriin (char*).
Sitten luet merkkipuskurista (esim fscan()) muuttujan arvon ja seuraat palautuskoodia ( = virhekoodi jos muuta kuin NULL)
int number;
cin >> number;
while(cin.fail()) // tarkistaa onko tapahtunut virhe
{
cin.ignore(1000,'\n'); // tyhjentää puskurin
cin.clear(); // nollaa virhebitit
cin >> number;
}