Urgent svp!!!!!! fonction en C

Fermé
stroumpf Messages postés 289 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 1 mars 2009 - 7 juil. 2008 à 18:02
stroumpf Messages postés 289 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 1 mars 2009 - 7 juil. 2008 à 19:42
Bonjour,
jai developpé une fonction en C et qui bug: ua pas mal d'erreurs!!! 4 erreurs.
cettefonction prend en entree un mot et une liste chainée et doit verifier que le mot en entréé verifie la condition d'inclusion pour tous les sequence des mots qui sont dans une liste chainée.
la fonction de verification marche nikel pour 1 mot et 1 seq
mais quand je la fait tourner pour tte une liste cacause un pb.
merci
je compte sur vous.

int chercher_mot(const char *phrase,const char *mot){
    int last;
    const size_t size = strlen(mot);
    char *find = strstr(phrase,mot);
    char *p;
    
    while(find){
        // le mot a été trouvé, mais est ce le dernier mot ?
        if(strlen(find) == size) return 1;
        else{ // le mot est peut être en dernière position mais suivi de caractères autre que des mots (ponctuation...)
            last = 1; // 1 si mot est bien le dernier dans la séquence, 0 sinon
            for(p = &(find[size]);*p != '\0';++p){
                if (isalpha(*p)){ // on a trouvé un caractère alphanumérique derrière donc ça ne va pas
                    last = 0;
                    break;
                }
            }
            // le mot n'est pas suivi de caractère alphanumérique donc c'est bon
            if (last) return 1;
        }
        find = strstr(&(find[1]),mot);
    }
    return 0;
}

int verifCondition2seq(char *mot, Liste *seq)
{
    if(seq==NULL)
    return 0;
    Liste *tmp = seq;
    while(tmp != NULL)
    {
              if(chercher_mot(tmp->mot, mot))
              return 1;
              printf ("ok");
              tmp=tmp->suivant;
     }  
     return 0;
}           

1 réponse

stroumpf Messages postés 289 Date d'inscription mardi 17 juin 2008 Statut Membre Dernière intervention 1 mars 2009 2
7 juil. 2008 à 19:42
Bonsoir àtous
jai un probleme avec cette fonction qui doit supprimer le 1er element de la table de hacahge.
elle nefonctionne pas: affiche des erreurs :
1--[Warning] passing arg 2 of `verifCondition2seq' from incompatible pointer type if( verifCondition2seq(TableHash[i]->mot, seq->mot )==1)
2- invalid initializer Liste tmp = TableHash;

3- invalid type argument of `->' TableHash = tmp->suivant;
4-incompatible type for argument 1 of `free' free(tmp);

je copte sur vous.
merci
void elaguer (Liste *seq, Liste **TableHash )
{
     Liste *tmp;
     while( seq != NULL && verif_condition_2seq(TableHash->mot, seq->mot ){
     Liste tmp = TableHash;
     TableHash = tmp->suivant;
     free(tmp);
     printf (" bon");
}
0