Autor Thema: Integer Eingabe mit Tastatur  (Gelesen 2204 mal)

iksnagreb

  • Beiträge: 28
    • Profil anzeigen
Gespeichert
« 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?

Case23

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« Antwort #1 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

iksnagreb

  • Beiträge: 28
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 12. August 2012, 12:40 »
Vielen Dank! So funktioniert es perfekt.

 

Einloggen