IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Probleme avec scanf


Sujet :

C

  1. #1
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut Probleme avec scanf
    bonsoir,

    j'ai ecrit une fonction dans laquelle j'ai ce bout de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void msg_saisi(int *pX, int *pY)
    {
     
      printf("\nSaisie case a jouer (X Y) : ");
      scanf("%d %d", pX, pY);
     }
     
    [...]
     
     msg_saisi(&x, &y);
     sprintf(pData,"JOUER %d %d\n\r", x, y);
    le probleme c'est lorsque je rentre après l'invite de saisie:
    Saisie case à jouer (X Y): 1 2 5
    il envoie bien 1 2

    mais à la prochaine saisie, il garde en memoire le "5" de trop exemple
    Saisie cas à jouer (X Y): 2 3

    il envoie 5 2 et gardera le "3" pour le prochain tour.

    Comment faire pour qu'il ne garde plus en memoire la valeur de "trop" ???

    Merci

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    problème classique du scanf...

    Le scanf garde le retour à la ligne...

    Voir les mutiples posts à ce sujet ici-même (tu dois en avoir un en page 2 ou 3)...

  3. #3
    Membre Expert
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Par défaut
    http://c.developpez.com/faq/c/?page=...EN_scanf_fgets
    et
    http://c.developpez.com/faq/c/?page=...EEN_gets_fgets

    Voir ensuite la fonction sscanf pour récupérer des résultats des chaines lues.

  4. #4
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    La solution au cas où d'autre personne aurait le même problème.

    NB: les elements mis en gras, sont ceux qui ont été ajouter au c ode pour qu'il fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       printf("\nSaisie case a jouer (X Y) : ");
       retour = scanf("%d %d%*[^\n]",pX, pY);
       while ( ((c = getchar()) != '\n') && c != EOF);
    Voila, merci à ceux qui ont repondus !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme avec scanf et printf imbriqués
    Par nozgarde dans le forum C
    Réponses: 8
    Dernier message: 11/04/2008, 11h24
  2. problem avec scanf
    Par yous18 dans le forum Débuter
    Réponses: 5
    Dernier message: 14/09/2007, 03h24
  3. Probleme avec un scanf
    Par johnson95 dans le forum C
    Réponses: 5
    Dernier message: 29/03/2007, 23h09
  4. Probleme Avec Scanf Et Gets !
    Par A_B dans le forum C
    Réponses: 11
    Dernier message: 09/03/2007, 21h20
  5. [debutant] Probleme avec le scanf()
    Par mc_fly dans le forum C
    Réponses: 21
    Dernier message: 07/09/2006, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo