Arrête le saisir après certains temps d'attendre

Fermé
sekmani52 Messages postés 4 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 5 juillet 2017 - 28 juin 2017 à 19:53
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 29 juin 2017 à 14:16
Bonjour,
Je cherche une fonction qui arrête la saisie après certains temps par exemple quand a taper ce code :
Char v;
Printf("donner une caractere");
Scanf("%c",v);

Quand j'exécute le programme le compilateur attendre l'utilisateur jusqu'à l'appuis sur un carectere donc si on peut dépassé le saisir et execute le suite de code après certains temp d'attendre comment peut faire ça je fait plusieurs essais avec les boucles "do...while" et "for loop" et "if statment" mais tous ne donnent pas les resultats attendue enfin merci d'avance

3 réponses

Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 11
28 juin 2017 à 20:06
Bonjour sekmani52,

Peut-être devrais-tu travailler directement avec le fichier « stdin » ?
0
sekmani52 Messages postés 4 Date d'inscription mercredi 8 juin 2016 Statut Membre Dernière intervention 5 juillet 2017
28 juin 2017 à 20:45
Bonjour Felice je travaille avec geany sous raspbian c'est un code d'une circuit avec raspberry mais je bloqué dans le code
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 29 juin 2017 à 14:18
Salut sekmani52,

Ta question n'est pas très compréhensible.

Mais la façon de faire la plus commode est probablement d'utiliser ncurses pour gérer la pression de touches sur le clavier de façon non bloquante.

Ensuite, si tu dois gérer le temps, tu peux utiliser les fonctions C standard time() et difftime(), pour gérer un timer basique à la seconde (ou sous Linux gettimeofday() pour une gestion à la microseconde).

Voilà un exemple simple, qui affiche les codes ASCII des touches pressées, qui termine le programme lorsque ESC est pressé ou que 10 secondes se sont écoulées :

sekmani52.c :
#include <ncurses.h>
#include <stdio.h>
#include <time.h>

int main(void) {
    int c;
    time_t start_time = time(NULL);

    initscr();

    cbreak();
    noecho();
    nodelay(stdscr, TRUE);
    scrollok(stdscr, TRUE);

    printw("ncurses is handling the terminal now, "
            "press any key and press ESC to end the program\n");
    printw("(this program will end in 10 seconds)\n\n");
    refresh();

    while (1) {
        c = getch();
        if (c != ERR) {
            printw("You pressed key %d\n", c);
            refresh();
            /* if we pressed ESC, exit the loop */
            if (c == 27)
                break;
        } else {
            /* do something else */

            /* keep track of elapsed time */
            time_t now = time(NULL);
            double elapsed = difftime(now, start_time);
            /* in any case, exit the loop after 10 seconds */
            if (elapsed > 10)
                break;
        }
    }
    endwin();

    printf("We are out of ncurses now, you pressed ESC key, "
            "or the 10 seconds execution were over, so the "
            "program ends now\n");

    return 0;
}

cela se compile avec :

gcc -Wall sekmani52.c -lncurses

Dal
0