c++ Tastatur Eingabe während sleep() deaktivieren?

1 Antwort

Mal abgesehen davon, dass das Sleep hier völlig sinnlos ist: Ja, die Benutzereingaben werden gepuffert, bis das Programm sie wieder verarbeiten kann. Eine Möglichkeit, das zu verhindern wäre, eine Schleife zu bauen, welche die Tastatureingaben annimmt aber schluckt und diese Schleife so lange laufen zu lassen, bis die gewünschte Wartezeit verstrichen ist. So bleibt das Programm quasi "responsive", aber tut einfach nichts mit den Eingaben.

Wozu an dieser Stelle aber warten? Gib doch gleich alles aus, dann hast Du das Problem nicht.


Crimeofficial 
Fragesteller
 26.10.2021, 09:16

Ich spiel nur ein bisschen rum, bin ganz neu zum Programmieren, sleep war gedacht damit der User erst den Text ganz oben ließt und danach die Zahl eingeben kann.

0
ohwehohach  26.10.2021, 10:08
@Crimeofficial

Ja, das habe ich schon verstanden. Aber dann muss Du eben das tun, was ich beschrieben habe oder aber den Tastaturpuffer leeren. Der einfachste Weg, das zu tun ist:

while(kbhit()) 
  getch();

Benötigt den Import von conio.h.

0
Crimeofficial 
Fragesteller
 26.10.2021, 11:09
@ohwehohach

Vielen Dank, funktioniert so wie gedacht. Kannst du vielleicht wenn du kurz Zeit hast sagen wie die while schleife funktioniert? Weiss nur dass getch / kbhit iwas mit Eingabe und Prüfung ob der Benutzer eine Taste drückt zu tun hat. Danke nochmal.

0
ohwehohach  26.10.2021, 11:15
@Crimeofficial

Richtig. kbhit prüft, ob eine Taste gedrückt wurde (was für jede gepufferte Eingabe ja der Fall ist). getch ruft dann das entsprechende Zeichen aus dem Tastaturpuffer ab. Da getch blockieren und auf eine Eingabe warten würde, wenn nichts mehr im Puffer ist, macht man das eben nur, wenn auch was im Puffer ist. Damit ist der Puffer nach der Schleife leer.

1