Schleifenabbruchbedingung - Enter drücken?
lima-city → Forum → Programmiersprachen → C/C++ und D
abfrage
abfragen
ansatz
anwendung
bibliothek
code
durchgang
eingabe
einlesen
endlosschleife
funktion
keyboard
konsole
laufen
millisekunde
programm
schleife
tastatur
taste
umsetzen
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also ich hab zwar nicht viel ahnung von C aber du könntest in jedem durchgang abfragen ob die Enter taste gedrückt wurde (ka wie das geht) und wenn sie gedrückt wurde (True) wird die schleife beendet. Die Abfrage könnte man auch in einen Thread velagern dann würde es "Zeit" sparen.
Hoffe ich könnte dir helfen
Beitrag zuletzt geändert: 29.4.2010 18:11:50 von krisi12345 -
Sag bitte zuerst um was für eine Anwendung es sich handelt. Konsole? Win32?
-
... will eine while-Schleife (in c++, konsolenanwendung) solange ...
wie ich schon geschrieben habe handelt es sich um eine Konsolenanweisung^^ -
Ooops, das muss ich übersehen haben.
Also, mein Ansatz wäre, dass du mit getchar() (stdio) den aktuellen Character holst und auf Newline prüfst.
Also sowas:
while (getchar() != 0x0A) { // \n
} -
//Funktioniert wahrscheinlich nur unter UNIX-Systemen #include <iostream> #include <cstdio> #include <signal.h> int main( int argc, char ** argv ) { int pid = fork(); if( pid ) { //Elternprozess while( getchar() != '\n' ) {} kill( pid, SIGTERM ); return 0; } //Kindprozess while( 1 ) { std::cout << "bla\n";; } return 0; }
Erläuterung: Mit fork() wird der Prozess kopiert, so dass 2 Prozesse laufen. Der eine Prozess wartet auf die Tastatureingabe und der zweite führt die Endlosschleife aus.
Sobald der erste Prozess eine Enter-Eingabe empfängt, sendet er ein SIGTERM an den anderen Prozess mit der Endlosschleife und beendet sich selber. -
Ich würde das über Qt machen. Du kannst ja trotz Konsolenanwendungen einige Bibliotheken einbinden. :)
Ich denke, wenn du das nämlich wie meine Vorgänger machst, wird ja dauerhaft direkt hintereiander immer wieder die Bedingen geprüft.
Wenn du das über einen QTimer machst, den du immer wieder hochsetzt, kannst du wenigstens ein paar Millisekunden Freiraum setzen. Und ich finds stilischtisch schöner, da du es dann auch erweitern kannst, mit anderen Funktionen. :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage