Schleife abbrechen per eingabe?
-
Hallo
Mein problem:
Nehmen wir an Ich hab eine schleife, Z.B. ein countdown. Und der zählt halt von 10 bis 0 runter. Wie kann ich jetzt, während der countdown einfach läuft, per tastendruck die schleife abbrechen? Also, ich will nicht jedes mal mir cin warten und dann break machen wenn man nich weidermachen will, sondern die schleife soll einfach weiterlaufen. Wie stell ich das an???
Thx
-
Mit kbhit() kannst du unter den meisten Compilern testen ob eine Taste gedrückt wurde, mitch getch() kannst du die gedrückte Taste abfragen und mit break kannst du eine Schleife unterbrechen.
Also in etwa so:
#include <conio.h> // ... for(;;) { if(kbhit()) break; }
Die Schleife läuft also so lange bis man eine Taste drückt.
-
Ist allerdings kein Standard.
-
Ja, steht in meiner conio.h auch irgendwie nicht drin :-?
-
Dann tuts mir sorry
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
eine Schleife hat für gewöhnlich ja auch eine Abbruchbedingung. wenn nun die Taste gedrückt wird, könnte man einfach die Variable der Schleife so setzen, dass die Abbruchbedingung erfüllt ist
for(int i = 10; i = 0; i--) { if(kbhit()) i = 0; }
-
@dasRalph
Noch einfacher wärs natürlich die Bedingung des if einfach in die Bedingung der Schleife mit aufzunehmen
Wenn das nicht geht, dann ist break (wenn es an der Stelle sinnvoll ist) die bessere Lösung.
-
Ähm...wieso ist das jetzt verschoben worden? Ich habe nicht gesagt das das was ich wissen will ausschliesslich in WIN Konsolen funzen soll, am leibsten wärs mir wenns mit der methode auf alles BS funzt ...
Ach ja:
kbhit() steht in meiner conio.h nicht drin! Compiler: Dev-cpp 4
-
Ich kenne keine Lösung, die bei allen Betriebssystemen funktioniert. Bei X86-Systemen könntest du höchstens noch mit Assembler und Interrupts arbeiten (wenn das überhaupt unterstützt wird; aber trotzdem umständlich).
Für Linux hat schon mal jemand eine Lösung gepostet bzw. eine Version von kbhit() unter Linux.
Dass der Dev-cpp das nicht kann, wundert mich nicht.