Forum » Programiranje » [C++] atoi() funkcija
[C++] atoi() funkcija

nejodagreat ::
Napisal sem tele vrstice:
Gre se za console application, praktično šolski primer, ampak me vseeno zajebava...ko v spremenljivko a vpišem naprimer "9", se do-while zanka prekine, se pa ne spremeni vrednost spremenljivke x, ki še vedno ostane 10 (kot je inicializirana). Kaj delam narobe?
char a;
int x=10;
do
{
if(isdigit(a))
x = atoi(&a);
else
{
cout<<"Izberi moznost menija: "<<endl;
cin>>a;
}
}
while(!isdigit(a));
cout<<x<<endl;
Gre se za console application, praktično šolski primer, ampak me vseeno zajebava...ko v spremenljivko a vpišem naprimer "9", se do-while zanka prekine, se pa ne spremeni vrednost spremenljivke x, ki še vedno ostane 10 (kot je inicializirana). Kaj delam narobe?

amacar ::
Oz da se popravim, ko prvič preveriš if(isdigit(a)), še a ni inicializiran.
Zgodovina sprememb…
- spremenil: amacar ()

amacar ::
Kaj takšnega bi bilo pomoje boljše:
char a;
int x=10;
do
{
cout<<"Izberi moznost menija: "<<endl;
cin>>a;
if(isdigit(a))
{
x = atoi(&a);
}
}
while(!isdigit(a));
cout<<x<<endl;

mallard ::
Zakaj se ne bi znebil funkcij atoi() in isdigit() in poskusil prebrat iz cin-a direktno v integer?
int x = 0;
while (cout << "Izberi moznost: ",
true) {
if (cin >> x) {
if (x > 0 && x < 10) break;
} else {
// vnos števila ni uspel
cin.clear(); // resetiraj zastavice o napakah
cin.sync(); // sprazni cin
}
}

nejodagreat ::
@amacar V bistvu sem imel praktično enako kot si ti napisal, problem je bil pa v tem, da atoi funkcija kot argument jemlje samo tip char[], ne pa char - vsaj tako sem potem našel nekje na internetu.
@mallard Hvala za to rešitev, sem bolj začetnik pa nisem vedel da lahko uporabim kar if(cin>>x)...čeprav pri datotečnem toku sem pa to že uporabil
.
Hvala obema!
@mallard Hvala za to rešitev, sem bolj začetnik pa nisem vedel da lahko uporabim kar if(cin>>x)...čeprav pri datotečnem toku sem pa to že uporabil

Hvala obema!