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 avec la fonction STRCMP()


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Juin 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 1
    Par défaut Problème avec la fonction STRCMP()
    Bonjour,

    Le but du programme est de demander à l'utilisateur si il souhaite continuer, le prog retourne 1 si l'utilisateur saisie "y" ou "Y" (passage en majuscule) et 0 pour le reste. La comparaison doit me retourner 0 si les chaine sont identique mais ça ne marche pas, please help. Merci d'avance

    Code de la fonction :

    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
    int TryAgain (){
        /* Message de confirmation */
     
        char *caractere, car;
        int compar;
     
        printf("\nDo you continu? y : Yes or other for No\n");
     
        //Empêche la récupération du caractère saut de ligne
        while (getchar() != '\n') ;
     
        //Récupération de la saisie et Passage en majuscule
        car = toupper(getchar());
     
        //Envoie de l'adresse du caractère saisi dans le pointeur caractère.
        caractere = &car;
     
        //Comparaison de la saisie avec yes "Y"
        compar = strcmp(caractere,"Y");
     
        //Si les chaînes sont identique -> retourne 1 sinon 0
        if(compar==0)
            return 1;
     
        return 0;
    }

  2. #2
    Membre chevronné Avatar de Jenna
    Inscrit en
    Décembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2009
    Messages : 272
    Par défaut
    2 petits problèmes dans ton code.

    char *caractere est un pointeur de chaine de caractères. Tu l'utilise dans strcmp(), cette chaine doit donc être une chaine de caractère au sens C, c'est à dire terminée par le caractère 0.

    Comme tu le fais, il n'y a pas de caractère 0 pour terminer la chaine.

    Je te propose quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char caractere[4];
    ...
    caractere[0] = car;
    caractere[1] = 0;
    ...
    if(strcmp(caractere, "Y") == 0)
    ...
    Autre chose, la fonction strcmp() est sensible à la casse. C'est à dire que "toto" est différent de "Toto".

    Utilise la fonction stricmp() si elle existe sur ton systeme, elle n'est pas sensible à la casse.

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Par défaut
    Bonjour,

    Tu te complique bien la vie en utilisant strcmp ici...

    Les caractères peuvent être comparés entre eux avec les opérations classiques == ou !=

    Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int TryAgain (){
        char car;
     
        printf("\nDo you continu? y : Yes or other for No\n");
     
        //Empêche la récupération du caractère saut de ligne
        while (getchar() != '\n') ;
     
         //Si les chaînes sont identique -> retourne 1 sinon 0
        if('y' == car || 'Y' == car)
            return 1;
     
        return 0;
    }

Discussions similaires

  1. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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