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 :

Do while et scanf


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    ceo
    Inscrit en
    Août 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ceo

    Informations forums :
    Inscription : Août 2005
    Messages : 62
    Points : 48
    Points
    48
    Par défaut Do while et scanf
    Bonjour,

    j'aimerais attendre un mot entré par l'utilisateur, effectuer une action, attendre une autre entrée, etc, infiniment (ou tant qu'un caractère spécial n'est pas rentré (ici #)).

    J'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    do { 
                      printf("Veuillez-entrer un mot à traduire, (# si vous avez fini)\n"); 
                      scanf(mot_a_chercher,"%s",&mot_a_chercher);
     
                   } while (mot_a_chercher != "#")
    Mais une fois la première chaîne entrée, j'ai une boucle infinie. Ou-est ce que je m'y prends mal?
    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Il y a de bonnes chance que le & de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf(mot_a_chercher,"%s",&mot_a_chercher);
    soit de trop.

    Et concernant celle-ci } while (mot_a_chercher != "#"), je te dirige vers la FAQ Comment comparer 2 chaînes de caractères ?

  3. #3
    Membre du Club
    Profil pro
    ceo
    Inscrit en
    Août 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ceo

    Informations forums :
    Inscription : Août 2005
    Messages : 62
    Points : 48
    Points
    48
    Par défaut
    Merci de ta réponse.

    Alors pour la comparaison des chaînes, oui bien sûr il faut utiliser strcmp, c'est ce que j'ai fait sur mon code, c'est en montrant une version simplifiée ici que j'ai bêtement mis ça.

    Pour ce qui est du &, je ne pense pas, voici ma déclaration de mot_a_chercher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char * mot_a_chercher = "";
    mot_a_chercher = (char *)malloc (30*sizeof(char));
    J'ai donc ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    do { printf("Veuillez-entrer un mot à traduire, (# si vous avez fini)\n"); scanf(mot_a_chercher,"%s",&mot_a_chercher);}
        while (strcmp(mot_a_chercher,"#") != 0);
    Mais j'ai toujours une boucle infinie, même si je rentre # comme première entrée d'ailleurs...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par simnitch Voir le message
    Pour ce qui est du &, je ne pense pas, voici ma déclaration de mot_a_chercher :
    Et bien si justement, &mot_a_chercher renvoie l'adresse du pointeur lui-même, pas celle allouée vers laquelle il pointe.

  5. #5
    Membre du Club
    Profil pro
    ceo
    Inscrit en
    Août 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ceo

    Informations forums :
    Inscription : Août 2005
    Messages : 62
    Points : 48
    Points
    48
    Par défaut
    OK. Sais-tu pourquoi je n'avais pas de messages d'erreur pour ça?

    Bon sinon ça ne fonctionne pas mieux...

  6. #6
    Invité
    Invité(e)
    Par défaut
    Autre erreur à laquelle je n'avais pas prêté attention :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf(mot_a_chercher,"%s",mot_a_chercher);
    (Bien que l'on préfèrerait fgets)

  7. #7
    Membre du Club
    Profil pro
    ceo
    Inscrit en
    Août 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ceo

    Informations forums :
    Inscription : Août 2005
    Messages : 62
    Points : 48
    Points
    48
    Par défaut
    C'est bon ça fonctionne, merci bien

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

Discussions similaires

  1. scanf bypassé dans une boucle do-while (Langage C)
    Par Magrak dans le forum Windows
    Réponses: 2
    Dernier message: 09/09/2010, 11h32
  2. scanf doublé dans un while
    Par salokine dans le forum Débuter
    Réponses: 2
    Dernier message: 14/07/2008, 23h05
  3. Scanf dans une boucle while
    Par DreakY dans le forum Débuter
    Réponses: 8
    Dernier message: 22/02/2008, 13h44
  4. Boucle while et scanf
    Par sedget dans le forum C
    Réponses: 10
    Dernier message: 10/01/2008, 11h15
  5. Problème de SCANF dans une boucle WHILE
    Par FidoDido® dans le forum C
    Réponses: 4
    Dernier message: 30/12/2005, 18h42

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