Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: iksnagreb am 11. August 2012, 22:02

Titel: Integer Eingabe mit Tastatur
Beitrag von: iksnagreb am 11. August 2012, 22:02
Ich programmiere seit einigen Tagen einen Tastaturtreiber für meinen Kernel.
Jetzt versuche ich eine Funktion zur Eingabe von Integern zu schreiben:
int getn()
{
int ziffer_1 = getchar() - 48;

int ziffer_2 = getchar() - 48;

int ziffer_3 = getchar() - 48;

int zahl;

if(ziffer_1 < 0 || ziffer_1 > 9 || ziffer_2 < 0 || ziffer_2 > 9 || ziffer_3 < 0 || ziffer_3 > 9)
{
zahl = -1;
}
else
{
zahl = ziffer_1 * 100 + ziffer_2 * 10 + ziffer_3 * 1;
}

return zahl;
}

Diese Funktion funktioniert ganz gut, doch wie man sieht wird man bei der Eingabe dazu "gezwungen" Zahlen mit drei Ziffern einzugeben.
Mir fällt keine andere Lösung ein, als für jede Ziffer eine Eigene Variable anzulegen, die würde den Code jedoch sehr lang und unschön machen.
Kennt jemand hier eine schönere Lösung für mein Problem?
Titel: Re: Integer Eingabe mit Tastatur
Beitrag von: Case23 am 11. August 2012, 23:05
wie wäre es mit folgendem pseudocode:
int zahl = 0
schleife:
lese zeichen
wenn zeichen eine ziffer dann
zahl = zahl * 10 + ziffer
ansonsten
schleife verlassen
Titel: Re: Integer Eingabe mit Tastatur
Beitrag von: iksnagreb am 12. August 2012, 12:40
Vielen Dank! So funktioniert es perfekt.