getchar() soll durch timer beendet werden

Huemler

Mitglied
Hallo ich habe folgendes Problem.
Und zwar lese ich mit einer while-Schleife Zeichen ein mit getchar().
Diese while-Schleife soll nach 34 Zeichen beendet werden.
Falls jedoch keine 34 Zeichen empfangen werden, löst nach einer eingestellten Zeit ein Timer aus.
Wenn der Timer auslöst springe ich in die Timerroutine und kann dort auch Befehle ausführen lassen usw... jedoch springt er dann wieder an die Stelle wo c=getchar() steht und wartet dort.
Springt also von hier aus immer in Timerroutine raus und wieder hierher.
Das Problem ist, dass er die while-schleife somit garnichtmehr überprüft sondern erst weitermacht wenn ich wieder ein Zeichen empfangen habe.

Was für eine möglichkeit gibt es denn, wie ich durch einen Timer die while-schleife verlassen kann?

Gruß
Huemler
 
Hallo Huemler,

um dein Vorhaben zu realisieren benötigst du Threads, da der Timer bis zur endgültigen Eingabe eines Zeichens geblockt werden würde.

Ich denke du programmierst in der Windows Umgebung?
Wenn dies so ist, schau dich mal in der MSDN über die Win32-Api um ;).
 
Morgen,
also ich programmiere unter Linux.
Mein Problem ist ja nicht, dass der Timer nicht ausgelöst wird, sondern, wenn er ausgelöst hat springt er raus und dann wieder zurück in meine Whileschleife zu c=getchar() und das endlos.

Ich hab ja auch ne Idee wie ich mein Problem lösen könnte aber komm da nicht weiter, hab auch im Netz nichts dazu gefunden:

Überprüfen des Inputbuffer ob ein Zeichen drin steht, wenn nicht wird die while-schleife mit dem getchar garnicht durchlaufen.
Aber wie kann ich den Inputbuffer in C auf ein Zeichen überprüfen?
 
Morgen,
also ich programmiere unter Linux.
Mein Problem ist ja nicht, dass der Timer nicht ausgelöst wird, sondern, wenn er ausgelöst hat springt er raus und dann wieder zurück in meine Whileschleife zu c=getchar() und das endlos.

Ich hab ja auch ne Idee wie ich mein Problem lösen könnte aber komm da nicht weiter, hab auch im Netz nichts dazu gefunden:

Überprüfen des Inputbuffer ob ein Zeichen drin steht, wenn nicht wird die while-schleife mit dem getchar garnicht durchlaufen.
Aber wie kann ich den Inputbuffer in C auf ein Zeichen überprüfen?

Was anderes habe ich auch nicht behauptet, deswegen sagte ich auch das es ohne Threads nicht möglich ist solange das Programm durch die Eingabe gestoppt wird.
 
Zurück