Supprimer doublons tableau C

Résolu
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

  • Votes
  • Date
  • Date décroissante
  1. 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.
    1. 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. Après réflexion, le dernier parcours est inutile : on peut créer le tableau directement dans le Si...