scanf() nach bestimmter Zeit überspringen



  • Hallo Leute,

    ich schreibe auf dem Raspberry Pi ein C-Programm bei dem eine Eingabe mit scanf() vorgenommen wird.
    Mein Vorhaben:
    Der Nutzer hat eine bestimmte Zeit um die Eingabe zu tätigen. Wird keine Eingabe in der besagten Zeit getätigt soll die Eingabe übersprungen und eine default bzw. Standardeingabe automatisch ausgewählt werden.

    Durch google bin ich schon auf kbhit und getch (conio.h) gestoßen, allerdings läuft die Geschichte nicht unter Linux.

    Hat jemand eine andere Lösungsmöglichkeit?

    Gruß


  • Mod

    Der conio von DOS entspricht unter Linux ungefähr ncurses.



  • conio.h Zeugs läuft nicht unter Linux.
    Timeout-Geschichten macht man unter Linux mit select oder poll.
    Und ins Linux-Subforum gehört die Frage sowieso.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89, C99 und C11) in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wutz schrieb:

    conio.h Zeugs läuft nicht unter Linux.
    Timeout-Geschichten macht man unter Linux mit select oder poll.
    Und ins Linux-Subforum gehört die Frage sowieso.

    Hast du ein passendes kleines Beispiel für meinen Fall?

    Gruß



  • int main(void) {
    char s[100];
    fd_set fs={0};
    printf("Geben Sie innerhalb von 10 Sek. etwas ein: ");
    select(1,&fs,0,0,(struct timeval[]){{.tv_sec=10}});
    if (FD_ISSET(0, &fs))
    scanf("%99[^\n]",s);
    else
    puts("Timeout");
    
    return 0;
    }
    

    http://ideone.com/c91uQB


Log in to reply