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 :

comparateur 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
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut comparateur de chaines
    Bonjour

    Voila je cherche une fonction capable de comparer deux chaines mais pas n'importe comment. J'aimerais qu'elle compare seulement une partie de la chaine ('ça' dans l'exemple ci dessous par exemple)

    Il existe "strcmp" pour comparé 2 chaines de caractères et renvois 0 si elles sont identiques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (strcmp(buffer, "coucou comment ça va ?") == 0)
    Il existe "memcmp" pour comparer le début de 2 chaines de caractères en choisissant le nombre de lettres (ici 3) et renvois 0 si elles commencent de la même façon.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (memcmp(buffer, "coucou comment ça va ?", 3) == 0)
    Mais existe-t-il autre autre fonction capable de faire se que je cherche ? (donc de chercher que 'ça' dans la chaine ?)

    Merci.

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    Salut,

    Je ne comprend pas trop ce que tu souhaites faire,

    mais si tu veux seulement vérifier que ta chaine contient la chaîne "ça", tu peux utiliser strstr.

    strstr te renvoie un pointeur sur sur le début de la chaîne qui à été trouvé où un pointeur null dans le cas contraire.

    Pour plus d'infos regarde le man.

    Si ce n'est pas ce que tu cherche, ré explique moi.

    NeoKript

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut
    Hum...

    en faite je doit retrouver un chaine dans une chaine...

    j'explique:

    Le programme génère une chaine "dkflqsfhqjhfljhqljhzqlhf salut" qui se nome 'buffer'

    J'ignore la contenance du 'buffer' excepté ! je sais qu'il y aura un "salut" dedans qui se trouve à la fin de la chaine.

    Mon but est d'analyser le 'buffer' (la chaine donc) pour trouver "salut"

    je ne peut pas utiliser 'strcmp' car j'ignore le contenant total de la chaine
    je ne peut pas utiliser 'memcmp' car j'ignore les premières lettres de la chaine

    J'espère être plus claire

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    Citation Envoyé par AddicTion Voir le message
    Hum...

    en faite je doit retrouver un chaine dans une chaine...

    j'explique:

    Le programme génère une chaine "dkflqsfhqjhfljhqljhzqlhf salut" qui se nome 'buffer'

    J'ignore la contenance du 'buffer' excepté ! je sais qu'il y aura un "salut" dedans qui se trouve à la fin de la chaine.

    Mon but est d'analyser le 'buffer' (la chaine donc) pour trouver "salut"

    je ne peut pas utiliser 'strcmp' car j'ignore le contenant total de la chaine
    je ne peut pas utiliser 'memcmp' car j'ignore les premières lettres de la chaine

    J'espère être plus claire
    Dans ce cas c'est ce que je disais, utilise la fonction strstr de la lib c.

    Elle est faite pour cela.

    Bonne soirée

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 52
    Par défaut
    j'ai un doute sur mes capacités à l'utiliser...

    Il faut bien faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (strstr(buffer, "salut") == 0)
    avec ceci il cherchera dans toute la chaine se mot exacte ?

    car quand j'ai une chaine qui ne se compose pas de "salut" la fonction strstr renvoie 0 quand même.

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    En effet,

    il faut faire quelque chose comme tu as dit, utilise plutôt NULL que 0 (même si NULL est défine par #define NULL 0) car la fonction renvoie un pointeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (strstr(buffer, "salut") == NULL)
    Ainsi, la fonction renverra NULL si "salut" n'a pas été trouvé dans buffer et sinon elle renverra un pointeur sur le début de chaines où le mot à été trouvé.

    Voir : Man

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

Discussions similaires

  1. Comparateur de chaine en pl/sql
    Par squalito dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 17/12/2004, 09h51
  2. Comparateur de chaine en pl/sql
    Par squalito dans le forum PL/SQL
    Réponses: 12
    Dernier message: 17/12/2004, 09h49
  3. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25
  4. [TP]lire une ligne de l'ecran et la stocker dans une chaine
    Par Bleuarff dans le forum Turbo Pascal
    Réponses: 26
    Dernier message: 02/07/2002, 10h08
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

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