While schleife abbrechen mit Zeichen

Hallo,

Ich habe eine While-Schleife, die so vor sich hin arbeitet.
Am Ende der Schleife soll eine gewisse Zeit gewartet werden, ob eine Eingabe erfolgt, und wenn keine kommt, soll ein neuer Durchlauf gestartet werden. Erfolgt eine Eingabe, soll die Schleife beendet werden.

Das Problem ist, das ich nicht weiß, wie ich die Eingabe hinkriegen soll.
Mit cin muß ich jede runde bestätigen, das ich die Schleife noch mal durchlaufen will; aber die Ergebnisse der Schleife werden erst nach ca. 200 Runden interessant…

Wie kriege ich also eine Eingabe hin, die nicht unbedingt erfolgen muss, die aber trotzdem jede Runde abgefragt wird???

bis dann,
Jan

Hallo Jan,
das kommt darauf an, auf welcher Plattform du das ganze programmieren willst. Für einen Mikrocontroller kann man das mit Interrupt - Prozeduren lösen. Unter C++ gibt es eine Funktion, die KeyPressed heißt. Wie die nun richtig funktioniert, weiß ich aber gar nicht.
Die while-schleife lässt sich durch ein break dann abbechen, dass Du in iner if Abfrage einbauen kannst.

Ich hoffe, dass ich Dir helfen konnte

MfG
Stefan Hager

So?
Hallo,

Das könnte Dein Problem lösen:

/\* KBHIT.C: This program loops until the user
 \* presses a key. If \_kbhit returns nonzero, a
 \* keystroke is waiting in the buffer. The program
 \* can call \_getch or \_getche to get the keystroke.
 \*/

#include 
#include 

void main( void )
{
 /\* Display message until key is pressed. \*/
 while( !\_kbhit() )
 \_cputs( "Hit me!! " );

 /\* Use \_getch to throw key away. \*/
 printf( "\nKey struck was '%c'\n", \_getch() );
 \_getch();
}

Output

Hit me!! Hit me!! Hit me!! Hit me!! Hit me!! Hit me!! Hit me!!
Key struck was 'q' 

Gruß, Ralf

tach,
nimm kbhit() das gibt true zurück wenn sich ein zeichen im tastaturpuffer befindet, also eine taste gedrückt wurde.
mit getch() bekommst du dann dieses zeichen zurückgegeben.

dann kanns du dir die warterei am ende auch sparen.