[c] eingabe nach zeit abbrechen

Pherseus

Erfahrenes Mitglied
Hi, ich bin auf der suche nach einer Möglichkeit, nur eine bestimmte zeit auf eine usereingabe zu warten und danach abzubrechen. Überlegt hab ich das ich dazu eine endlosschleife mache, in der ich dann prüfe ob die zeit abgelaufen ist oder ob eine eingabe nach stdin erfolgt ist. allerdings wenn ich nun eine funktion wie scanf oder ähnlich benutzen würde, würde er ja warten bis eine eingabe erfolgt ist. Ich hab mir halt gedacht kurz zu testen ist was auf STDIN wenn nein weiter mit der schleife, wenn zeit abgelaufen dann eben abbruch. Hab aber keine ahnung ob das so irgendwie geht oder ob es eine bessere/einfache/überhaupt eine lösung gibt.
 
hallo,
meiner meinung nach musst du multi-threads verwenden, sieh dir einfach mal das nachfolgende beispiel an.
vielleicht hilft dir das ein wenig weiter.

Code:
#include <process.h>
#include <stdio.h>
#include <time.h>
#include <conio.h>

int weiter = 1;
int count = 0;


void stoppuhr( void *dummy ) {
    time_t start;
    
    while(weiter) {
        time(&start);
        printf("\b\b\b\b%3i:", count);
        while(difftime(time(NULL),start) < 1);
          count++;
    }
    _endthread();
}


int main() {
    int zahl;
    printf("\nBitte Zahl eingeben    ");
    _beginthread( stoppuhr, 0, NULL );
    scanf("%i",&zahl);
    weiter = 0;
    printf("\nNach %i Sek. wurde %i eingegeben.",count,zahl);
    
    getch();
    return 0;
}
 

Hallo,
ich würde das Thema gerne noch einmal aufgreifen, da ich das gleiche Problem mit C++ habe.
Gibt es in C++ eine andere bzw. bessere Lösung, oder sollte ich mich auch mit Multithreads beschäftigen?

Danke im vorraus
 
Zurück