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 :

Problème de choix


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2012
    Messages : 42
    Par défaut
    Salut à tous !

    Ce que je vous soumet comme problème est extrêmement idiot je le sais mais j'ai juste un peu de mal avec les chaines de caractères... Pour faire simple ce que je veux c'est dire :
    si OUI 'O' fait ça sinon NON 'N' fait cela. C'est juste ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    char choix;
        printf("Voulez choisir un justificatif ? (O/N) : " );
        scanf("%s",choix);
        printf("Votre choix est : %s\n",choix); //Pour voir mon choix qui affiche bien
        if (choix == 'N'){
            printf("Choix NON.\n");
            //Juste un test mais y a des opérations ici 
        } else {
            printf("Choix OUI.\n");
            //et ici aussi
    }
    C'est banal comme problème, j'ai lu tout sur les chaines de caractères mais c'est assez intriguant....

    Et par la suite vérifier que l'utilisateur a bien saisi 'O' ou 'N'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    do {
           printf("Veuillez saisir 'O' ou 'N'.\n");
           scanf("%s",choix);
           printf("Vous avez saisi %s\n\n",choix);
           if (choix == 'N'){
               printf("Choix NON.\n");
               //Juste un test mais y a des opérations ici 
           } else {
               printf("Choix OUI.\n");
               //et ici aussi
        }while (choix != 'N' && choix != 'O');

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

    Justement ici il ne s'agit pas d'une chaine de caractères, mais d'un seul caractère. Vient donc le format qui va avec : %c et pas %s pour printf() et scanf().
    scanf() auquel on rajoutera un & devant choix.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2012
    Messages : 42
    Par défaut
    J'ai fait ce que tu m'as dit, enfin voila :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    char choix;  
        printf("Voulez choisir un justificatif ? (O/N) : " );
        scanf("%c",&choix);
        getchar();
     
        if (choix == 'N'){
            printf("Choix NON.\n");
        } else {
            printf("Choix OUI.\n");
        }
    Il ne présente que le choix OUI, peu importe la lettre que je saisie

  4. #4
    Invité
    Invité(e)
    Par défaut
    Tapes-tu bien un 'N' majuscule ? Ton code est tout à fait juste en tout cas.

  5. #5
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Il faut également être sûr qu'avant le scanf("%c",...), le buffer clavier soit vide (et ne contienne pas, par exemple, un '\n' restant d'une lecture précédente)

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2012
    Messages : 42
    Par défaut
    Citation Envoyé par diogene Voir le message
    Il faut également être sûr qu'avant le scanf("%c",...), le buffer clavier soit vide (et ne contienne pas, par exemple, un '\n' restant d'une lecture précédente)
    Merci beaucoup, justement je crois que c'est bien ça le problème.

    J'ai plusieurs procédures en fait et dans le main j'ai un switch()...case... qui exécute chaque procédure lorsqu'on la sélectionne au clavier.

    Le code est correct mais quand on l'exécute après un choix provenant du switch... case..., elle ne fonctionne pas.

    Comment libérer le buffer du clavier après la sélection de la procédure ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    do {
            printf("\n\n");
            printf("Faites votre choix : ");
            scanf("%d",&choix);
            switch(choix){
                case 1 : {
                    printf("Entrel'horaire de départ :\n");
                    printf("Lire h1 : ");
                    scanf("%d",&h1);
                    printf("Lire h2 : ");
                    scanf("%d",&h2);
                    printf("Lire m1 : ");
                    scanf("%d",&m1);
                    printf("Lire m2 : ");
                    scanf("%d",&m2);
                    dureevol1(h1,h2,m1,m2);
                    break;
                }
                case 3 : {
                    printf("Lire A : ");
                    scanf("%d",&a);
                    suitenombre(a);
                    break;
                }
                case 4 : {
                    printf("Lire A : ");
                    scanf("%d",&a);
                    tabcroissant(tab,a);
                    break;
                }
                case 5 : {
                    printf("Lire A : ");
                    scanf("%d",&a);
                    MaximumTab(tab,a);
                    break;
                }
                case 6 : {
                    machinesoud(); //Fonction contenant le code
                    break;
                    //En supposant que je dois libérer le buffer du clavier ici :)
                }
     
            }
        } while(choix != 0);
     
        return 0;
    }

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

Discussions similaires

  1. Re problème de choix de livre
    Par Loack- dans le forum Contribuez
    Réponses: 8
    Dernier message: 02/12/2006, 18h21
  2. Problème de choix automatique
    Par -Space- dans le forum Access
    Réponses: 2
    Dernier message: 05/07/2006, 15h08
  3. Problème de choix
    Par Karim1971 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 12/05/2006, 23h47
  4. Problème de choix de page lors de l'impression
    Par Olaf MENJI dans le forum Windows
    Réponses: 2
    Dernier message: 22/11/2005, 10h51
  5. Problème de choix pour un graphique
    Par MeDioN dans le forum 2D
    Réponses: 2
    Dernier message: 10/10/2005, 10h11

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