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!