Supprimer doublons tableau C

Résolu
dharth Messages postés 145 Statut Membre -  
dharth Messages postés 145 Statut Membre -
Bonjour,

je dispose d'un char **tab, qui contient x rangés contenant chacune une chaine.
Je souhaiterais supprimer les doublons pour former un nouveau tableau.
exemple :
tab[0] = "toto";
tab[1] = "titi";
tab[2] = "toto";
tab[3] = "titi";
tab[4] = "tata";

et je voudrais créer une fonction comme array_unique en php qui me permettrait de récupérer dans un nouveau tableau :
new[0] = "toto";
new[1] = "titi";
new[2] = "tata";

Quelqu'un à une idée pour construire l'algo?
merci

2 réponses

  1. dharth Messages postés 145 Statut Membre 13
     
    Merci pour cette réponse, mais en fait j'ai trouvé, dans mon tableau les doublons se suivent obligatoirement, donc j'ai fait ceci (tab_new étant déja malloc):
    while (tab_src[c] != NULL)
        {
            while (strcmp(tab_src[c], tab_new[d]) == 0)
                c++;
            d++;
            strcpy(tab_new[d], tab_src[c]);
            c++;
        }
    

    et ca fonctionne.
    2
  2. Brendonuts Messages postés 58 Statut Membre 12
     
    Bonjour,

    Pour i allant de 0 à tailletableau-1, faire,

    Pour j allant de i+1 à taille-tableau-1, faire,

    Si strcmp(tab[i],tab[j]), alors tab[j]=="";
    fait
    fait

    Puis un parcours sur le tableau : si tab[n] != "", je stocke, sinon je passe au suivant.

    Par contre, la comparaison de deux chaines de caractères en C doit se faire via une fonction précise type strcmp(chaine1, chaine2), et surtout pas de == !

    Bonne chance
    1
    1. Brendonuts Messages postés 58 Statut Membre 12
       
      Après réflexion, le dernier parcours est inutile : on peut créer le tableau directement dans le Si...
      0