Partage
  • Partager sur Facebook
  • Partager sur Twitter

petit problème de coordination

scanf et sleep ne font pas bon ménages :)

    25 février 2006 à 19:01:08


    Bonjour.
    J'aimerais que mon programe pose une question (exemple : combien font 10+10?)et que l'utilisateur est un certain temps (10 secondes?) pour répondre.
    Seulement arrivé à scanf mon programe attend que l'utilisateur rentre un nombre (donc le temps ne défile pas). J'ai utilisé la fonction sleep pour compter les secondes.
    Voici mon code:

     #include <stdio.h>
    #include <stdlib.h>

    long resultat = 0;


    int main(int argc, char *argv[])
    {
     long nombre = 10;
     
      printf("combien font 10 + 10(vous avez 10 seconde, 1 \"bip\" corespond a une seconde)?\n");
     
     
      while(resultat != 10 && nombre!= 0)
      {
      printf("\a");
     
     
     
     
      scanf("%ld", &resultat);
     
      sleep(1000);
      nombre--;
     
     }
     printf("\n");
      system("PAUSE");     
     
     
      return 0;
    }

    Merci d'avence.
    • Partager sur Facebook
    • Partager sur Twitter
      26 février 2006 à 9:19:11

      Re coucou, c'est re moi :D .
      Il y a actuellement 45 personne qui on lu mon tropic mais aucune réponse :( .
      Je rééxplique donc mon problème:
      J'aimerais poser une question à l'utilisateur et qu'il est un certain temps pour répondre.
      Pour compter les secondes j'ai fait une bouble autour de la fonction sleep.
      Seulement une fois arrivé à scanf le programme se bloque et attend que l'utilisateur rentre et nombre(il ne compte donc plus les secondes).
      Qelqu'un pourait-il m'éclairsir s'il vous plait?
      • Partager sur Facebook
      • Partager sur Twitter
        26 février 2006 à 9:20:57

        Rien à dire : c'est le comportement normal ; faut utiliser un timer et de manière générale un mécanisme asynchrone pour faire ça ; tu sauras faire un jour avec des libs externes à la libc, mais pas maintenant.
        • Partager sur Facebook
        • Partager sur Twitter
          26 février 2006 à 9:25:45

          Tu fais du multithreading ;)
          Juste avant le scanf() tu lance l'autre thread qui au bout de 10 secondes fait un exit(0); ;)
          • Partager sur Facebook
          • Partager sur Twitter
            26 février 2006 à 9:26:47

            o_O:euh: Ok merci merci quand même.
            Je trouve dans quelle librairie le thread?
            • Partager sur Facebook
            • Partager sur Twitter
              26 février 2006 à 10:26:41

              Salut ;)
              je ne connais pas le code <sleep>, mais est-ce qu'un petit if avec une condition si y reste du temps dans le sleep marcherait pour demander le scanf ? et un else pour dire qu'il n'y a plus de temps et fermer le programme :) ?
              • Partager sur Facebook
              • Partager sur Twitter
                26 février 2006 à 10:28:43

                Euh, non désolé car arrivé à scanf le programme se bloque et attend que l'utilisateur rentre un nombre.
                merci quand même.
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  26 février 2006 à 11:01:12

                  Et avec getchar, qui normalement n'attend pas une séisie utilisateur?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 février 2006 à 15:51:25


                    Bonjour.
                    Je voudrais savoir où trouver une librairie pour faire du multithreading(j'ai essayé avec SDL_tread mais sa marche pas).
                    Merci d'avance.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 février 2006 à 19:55:42

                      Merci mais je voudrais faire sa en langage C si c'est possible.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      petit problème de coordination

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown