# [c] eingabe nach zeit abbrechen



## Pherseus (31. Januar 2007)

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.


----------



## xFile (3. Februar 2007)

hallo,
meiner meinung nach musst du multi-threads verwenden, sieh dir einfach mal das nachfolgende beispiel an.
vielleicht hilft dir das ein wenig weiter.


```
#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;
}
```


----------



## Fabian H (5. Februar 2007)

Einfacher geht's mit select() und poll().

Als Filedescriptor wird stdin benutzt.


----------



## Freak (9. April 2007)

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


----------

