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 de comparaison avec un if


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 191
    Par défaut Probleme de comparaison avec un if
    Salut,

    j'appel une fonction lecture_fichier_txt qui comme sont nom l'indique va me lire les données d'un fichier.
    Ensuite j'effectue un printf pour voir la valeur qui a était recuperer.

    La valeur etant exact, elle s'affiche a l'ecran ds mon cas il s'agit d'une chaine "Affichage"

    Le ptit hic est que lorsque je fais une comparaison avec un if cela ne fonctionne pas

    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
    char* lecture_fichier_txt(int ligne); // fct permetant de lire une ligne du fichier
                                                            // txt est de renvoyer un pointeur
    
    int fct_main()
    {
    int ligne6=6;
    char* retour6 = NULL;
    
    .....
    .......
    retour6=lecture_fichier_txt(ligne6);
    printf("la chaine est donc : %s\n",retour6); // Ici je recupere bien la chaine "Affichage"
    
    
    if (retour6=="Affichage")
    printf("OK on a recupere la chaine\n");
    else
    printf("On a rien recuperer\n");
    }
    Donc ici la comparaison ne fonctionne pas ???

  2. #2
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Pour comparer des chaînes, il faut utiliser strcmp().

  3. #3
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 191
    Par défaut
    mais avec un if normalement ca peut marcher aussi???

  4. #4
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Citation Envoyé par insa59
    mais avec un if normalement ca peut marcher aussi???
    Oui, mais dans ce cas (i.e. avec ==), vous comparez les valeurs des pointeurs, non les caractères des chaînes. Il faut utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (!strcmp(chaine1,chaine2))
     /*Identiques*/
    else /*Différentes*/

  5. #5
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 191
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (!strcmp(chaine1,chaine2))  /*Identiques*/ else /*Différentes*/
    J'ai essayer la méthode mais ca ne fonctionne pas

    J'ai aussi fais comme cela mais rien. Il ne compare pas j'ai l'impression !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char ch1[] = "Affichage";
     
    if (strcmp(retour7,ch1)==0)
    printf("OK on a recupere la chaine\n");
    else
    printf("On a rien recuperer\n");

  6. #6
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Citation Envoyé par insa59
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (!strcmp(chaine1,chaine2))  /*Identiques*/ else /*Différentes*/
    J'ai essayer la méthode mais ca ne fonctionne pas
    Ca fonctionne. Vous devez mal l'utiliser. Inspirez-vous de ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdio.h>
    #include <string.h>
     
     
    int main(void)
     {
     char chaine1[]="test";
     
     if (!strcmp(chaine1,"test")) printf("Identiques\n");
     else printf("Différentes\n");
     return 0;
     }

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

Discussions similaires

  1. Probleme de comparaison avec mysql_num_rows
    Par terry90 dans le forum MySQL
    Réponses: 7
    Dernier message: 22/07/2009, 20h25
  2. probleme de comparaison avec strcmp
    Par wolverine1987 dans le forum Visual C++
    Réponses: 20
    Dernier message: 18/06/2009, 11h48
  3. [Kylix] Probleme de séparateur avec Kylix2 ?
    Par jeanphy dans le forum EDI
    Réponses: 4
    Dernier message: 10/02/2003, 16h41
  4. Réponses: 12
    Dernier message: 23/10/2002, 11h56
  5. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26

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