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 :

Recherche de chaine ...


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 73
    Points : 124
    Points
    124
    Par défaut Recherche de chaine ...
    Bonjour, voilà mon pb repose sur le C mais doit être applicable avec le gtk ... j'explique ...
    J'ai une chaine de carctère que je recupère d'une zone de texte ... ensuite je veux chercher certains mot clef pour connaitre sa position et pouvoir les coloré ...
    J'ai donc un type "char* text" dans lequel je dois rechercher le mot clef en question, et trouvé la position du premier caractère de ce mot ...
    Je trouve pas l'algo pour ca ... je dois être bête bon sang ca doit me pendre sous le nez hien ?
    Merci de m'aider

  2. #2
    FB
    FB est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    disons que ton mot est word.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(a=0;a<(strlen(text)-3) ;a++) /* 3 = longeur de word - 1*/ 
    {
    if( (text[a]=='w') && (text[a+1]=='o') && (text[a+2] == 'r') && (text[a+3]=='d'))
    break;
    }
    et a t'indique la position de la première lettre de word.

    C'est une solution de débutant, mais en tant que tel, je ne peux pas faire mieux.

    Pour bine comprendre lis les cours et tutoriels pour bien apprendre la programmation C : http://c.developpez.com/cours/

  3. #3
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    Un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int cherche_sous_chaine(char *phrase,char *mot){
    int i;
    int len=strlen(mot);
    /* tant que l'on peut trouver le mot dans la phrase */
    for (i=0;i<strlen(phrase)-len+1;i++){
        if (strncmp(&phrase[i],mot,len)==0) 
            return i;
    }
    return -1;
    Il faut peut-etre tester pour le test d'arretm, voire le dernier parametre de strncmp pour prendre en compte les \0.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 73
    Points : 124
    Points
    124
    Par défaut Recherche de chaine
    Alors là merci, reponse rapide est concrète ... cette algo me manquait réellement et à prioris elle marche très bien ...
    Vais enfin pouvoir faire de la recherche dans chaine ....
    Merci @ vous !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 92
    Points : 84
    Points
    84
    Par défaut
    Pourquoi ne pas utiliser cette fonction standard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <string.h>
    char *strstr (const char *meule_de_foin, const char *aiguille);

  6. #6
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    Je connaissais pas ! Et je vennais tout juste de la trouver et poster ca, mais tu as ete plus rapide :
    Bon, voici sa description
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
           #include <string.h>
     
           char *strstr(const char *haystack, const char *needle);
     
    DESCRIPTION
           The  strstr()  function finds the first occurrence of the substring needle in the string haystack.  The
           terminating `\0' characters are not compared.
     
    RETURN VALUE
           The strstr() function returns a pointer to the beginning of the substring, or NULL if the substring  is
           not found.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 73
    Points : 124
    Points
    124
    Par défaut Recherche de chaine ...
    Et bien c la même fonction qu'en PHP je vois ... marrant je la connaissais pas celle là ... le pb c que si il y a plusieurs mots dans la chaine à trouver , et bien il ne verra que le premier, à moin d'incrementer le pointeur mais là encore il ne me renvoie pas la position mais la sous chaine ...
    Or j'ai besoin de la position pour colorer le mot dans un GTKText ... à mon avis, l'algo donné plus haut par D[r]eadLock et FB me parrait plus approprié, celà dit je suis content de savoir que strstr existe en C, ca va me servir ca...
    Merci hein

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 92
    Points : 84
    Points
    84
    Par défaut Re: Recherche de chaine ...
    Citation Envoyé par Metal3d
    Et bien c la même fonction qu'en PHP je vois ... marrant je la connaissais pas celle là ... le pb c que si il y a plusieurs mots dans la chaine à trouver , et bien il ne verra que le premier, à moin d'incrementer le pointeur mais là encore il ne me renvoie pas la position mais la sous chaine ...
    Un appel itératif (tant que le résultat est différent de NULL) en passant comme paramètre le résultat précédent plus 1 marche très bien.
    Citation Envoyé par Metal3d
    Or j'ai besoin de la position pour colorer le mot dans un GTKText ... à mon avis, l'algo donné plus haut par D[r]eadLock et FB me parrait plus approprié, celà dit je suis content de savoir que strstr existe en C, ca va me servir ca...
    Merci hein :D
    La sous chaine c'est en quelque sorte la position : sous_chaine - chaine = position (c'est une histoire de pointeur).

  9. #9
    Membre averti

    Inscrit en
    Juin 2002
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 97
    Points : 307
    Points
    307
    Par défaut
    Citation Envoyé par D[r
    eadLock]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (...;i<strlen(phrase)...;...){
    A chaque itération du for, reparcours complet de phrase pour en déterminer la longueur... bonjour l'inefficacité !

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

Discussions similaires

  1. [10gR2] Recherche de chaines et formes flechies
    Par hotkebab99 dans le forum Oracle
    Réponses: 8
    Dernier message: 11/01/2006, 10h50
  2. [vbexcel]Rechercher une chaine dans une autre chaine...
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/12/2005, 14h49
  3. Réponses: 2
    Dernier message: 09/12/2005, 13h23
  4. Comment rechercher une chaine dans plusieurs tables ?
    Par tsing dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/11/2005, 19h04
  5. Recherche de chaine (TFindDialog)
    Par PoOky dans le forum Composants VCL
    Réponses: 10
    Dernier message: 30/08/2005, 08h59

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