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 :

Comparaison de chaines


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Par défaut Comparaison de chaines
    Salut tout le monde

    J'ai un probleme. Je souhaite comparer deux chaines de caractére l'un de type char * string l'autre contenu dans une structure. strcmp ne semble pas accéder au champs de la structure, et gcc me renvoie une erreur du genre qu'il ne peut pas comparer une chaine de caracteres et un pointeur... Alors comment faire ???? Voila je vous remercie!!

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par kernerteam
    Alors comment faire ????
    Deux options :
    • soit tu nous montres ton code
    • soit tu nous offres une ...

  3. #3
    Membre confirmé Avatar de _kal_
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Par défaut
    Exact, on ne peut rien dire si on ne voit pas ton code

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Par défaut Code
    Voila mon code comme vous me l'avez demander.

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
     
     
     
     
     
    //Pour l'instant tout est fait de façon trés naive
    //Je n'ai pas fait un programme modulaire exprés
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define L 23//Longeur du tableau
     
     
    int 
    main(void){
     
        //Tableau de pointeurs pour les noms de station
        char *stat[L];
     
        stat[0] = "la_defense";
        stat[1] = "esplanade_de_la_defense";
        stat[2] = "pont_de_neuilly";
        stat[3] = "les_sablons";
        stat[4] = "porte_maillot";
        stat[5] = "argentine";
        stat[6] = "charles_de_gaule_etoile";
        stat[7] = "georgesV";
        stat[8] = "franklin_d.roosvelt";
        stat[9] = "champs_elysees_clemenceau";
        stat[10] = "concorde";
        stat[11] = "tuileries";
        stat[12] = "palais_royale_musee_du_louvre";
        stat[13] = "louvre_rivoli";
        stat[14] = "chatelet";
        stat[15] = "hotel_de_ville";
        stat[16] = "saint_paul";
        stat[17] = "bastille";
        stat[18] = "gare_de_lyon";
        stat[19] = "reully_diderot";
        stat[20] = "nation";
        stat[21] = "porte_de_vincennes";
        stat[22] = "saint_mande";
        stat[23] = "berault";
        stat[24] = "chateau_de_vincennes";
     
        int i = 0;
        int j = 0;
     
        //La structure pour la liste chainé
        typedef struct list
        {
    	int ligne;
    	char *station;
    	struct list *next;
        }List;
     
        List *t;
        List *courant;
        List *q;
     
        t = (List*)malloc(sizeof(List));
        t->ligne = 2;
        t->station = stat[i];
        t->next = NULL;
        courant = t;
     
        while(i<L)
        {
    	q = (List*)malloc(sizeof(List));
    	q->ligne = 1;
    	q->station = stat[i+1];
    	q->next = NULL;
     
    	t->next = q;
    	t = q;
    	i++;
        }
     
        while(j<L)
        {
    	printf("*** %s ***\n",courant->station);
    	courant = courant->next;
    	j++;
        }
     
     
        char nom_station[BUFSIZ];
     
        puts("\n--------------------------\n");
        puts("Verifier une station!\n");
        puts("Pour cela ecrivez le nom d'une station quelqueconque.\n");
        puts("Le programme vous repondra par oui ou par non.\n");
     
        scanf("%s",nom_station);
     
        while(courant != NULL)
        {
    	//Là je veux comparer le nom de station entré par l'utilisateur au nom de station present dans les differents "wagons" de la liste
    	if( (strcmp(nom_station,courant->station) > 0))//Si ils sont différents ils me renvoie NON
           {
    	   printf("NOM");
           }
          else("OUI");
    	courant = courant->next;//Pour pouvoir passer à l'autre "wagon"
     
        }
     
        return EXIT_SUCCESS;
    }
    Voila j'espere avoir été assez claire cette fois. Merci

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    1. Pas de scanf("%s",nom_station);. Très mauvais.
    2. strcmp() peut retourner une valeur inférieure à zéro si les chaînes sont différentes. Utilise != au lieu de >.
    3. Pas de cast au retour de malloc() : c'est inutile en C (quoi que puissent en dire des vieux professeurs).
    4. BUFSIZ ne sert pas à cela. Utilise un #define perso pour ta taille de buffer.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Par défaut
    stat[0] = "la_defense";
    stat[1] = "esplanade_de_la_defense";
    stat[2] = "pont_de_neuilly";
    ca se fait ca ??

    Pour comparer 2 chaines, tu peux utiliser la fonction strcmp ou stricmp( ca dépend si tu veux prendre en compte la casse), mais pour cela il faut que cela soit 2 char *, il faut donc que tu fasses un cast vers char * de ton string.

Discussions similaires

  1. [VBA]excel comparaison de chaine de caractere
    Par ogenki dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/01/2006, 15h32
  2. [langage] Comparaison de chaîne
    Par Fastshadow dans le forum Langage
    Réponses: 7
    Dernier message: 05/09/2004, 18h58
  3. comparaison de chaines de caracteres en PLSQL
    Par biozaxx dans le forum PL/SQL
    Réponses: 3
    Dernier message: 19/08/2004, 09h41
  4. Comparaison de chaines
    Par Marc_P dans le forum Linux
    Réponses: 6
    Dernier message: 17/02/2004, 17h04
  5. [LG]comparaison de chaines de caracteres
    Par thesam dans le forum Langage
    Réponses: 6
    Dernier message: 20/05/2003, 22h41

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