"Probleme" mit while(!kbhit)

cler

Mitglied
Hallo zusammen,

ich habe folgendes Problem. Ich habe eine Ausgabe auf dem Bildschirm. mit delay(5000) kommt eine Pause von 5 Sekunden und dann die nächste Ausgabe und eine Abfrage. Ungefähr so.

Code:
while(!kbhit) 
{
	 printf("....
	 delay(5000);
	 printf("...
	 scanf("....
}

Mit while(!kbhit) wollte ich erreichen, dass die Schleife verlassen wird, also das Programm quasi abgebrochen wird. Leider funktioniert das nicht. Während man wartet, dass die fünf Sekunden um sind, kann man das nicht abbrechen.

Weiß vielleicht jemand, wie man das noch anders umsetzen könnte oder ob das überhaupt geht und man halt eben doch die 5 Sekunden warten muss, auch wenn man es gerne abbrechen würde?

vielen Dnak.

Gruß
cler
 
Ich würde bei kbhit die Klammern dranmachen: ( while !kbhit() )

Sonst prüfst du nämlich, ob der Funktionspointer von kbhit 0 ist (und das ist er nicht und wird es auch nicht).
 
Hallo,

hab ich nun dran, aber das Problem besteht immer noch. Der bricht erst nach den 5 Sekunden ab und nicht sofort.

Grüße
 
... zum 2. rufst du delay(5000); auf, delay() kommt aber erst nach den 5 sek. zurück!
Bessere Möglickeit:
Du speicherst dir die Zeit in Millisekunden ( GetTickCount() )vor der Schleife und frägst bei jedem Durlauf ab, ob 5 Sekunden vergangen sind, wenn ja, oder wenn Taste gedrückt, dann brichst du die Schleife ab.

Gruß Homer
 
Hallo,

mit der Funktion kann ich irgendwie nichts anfangen. Bekomme beim Compilen immer eine Fehlermeldung und auch in den Hilfen kann ich dazu nichts finden.

Gibt es da noch andere Funktionen, mit denen man die Zeit bestimmen kann und dann einfach immer die Differenz überprüft?

Grüße

Sven
 
Hallo,

vielen Dank.
Code:
time_t T;
time_t T_akt;
 
T = time(NULL);
 
While( !kbhit() && T_akt != T +5)
{
T_akt = time(NULL);
}
 
Zurück