Autor Thema: waitkey() funktioniert nur bei Ausgabe?  (Gelesen 5789 mal)

etlam

  • Beiträge: 2
    • Profil anzeigen
Gespeichert
« am: 19. March 2008, 20:17 »
Hallo,
Folgendes Problem:
Ich habe mir eine kleine Funktion gebastelt, welche auf einen Tastendruck warten soll und dann das entsprechende Zeichen zurückgibt.
Dafür gibt es die für Datei kb.c gültige Variablen:
static short keyset = 0;
static char keych;
Wenn eine Taste gedrückt wird, wird keyset auf 1 gesetzt.
Hier ist die Funktion waitkey():
char waitkey()
{
keyset = 0;
while(keyset==0)
{
puts(" \b");
}
return(keych);
}
Das ganze funktioniert komischerweise nur, wenn in der Schleife etwas ausgegeben wird.
Als Notlösung wird jetzt eine Leertaste ausgegeben und dann wieder zurückgegangen.

Wenn ich das puts(" \b"); weggmache, dann kommt die Funktion nicht zum return.

Woran liegt das?
Wo ist mein Denkfehler?

Vielen Dank schonmal im voraus,
etlam

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #1 am: 20. March 2008, 10:26 »
static volatile short keyset = 0;
static volatile char keych;

osdev.org: volatile
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

etlam

  • Beiträge: 2
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 21. March 2008, 14:04 »
Vielen Dank!
Jetzt funktionierts.

etlam

 

Einloggen