[C]Erreur de segmentation

Bonjour,

je voudrais savoir pourquoi ce code produit une erreur de segmentation et comment corriger cela

Merci

void bubbleSort(char **tab, int (*cmp)(void *, void *))
{
  char **p1, **p2;
  for(p1=tab; *p1!=NULL; ++p1)
    for(p2=p1+1; *p2!=NULL; ++p2)
      if((*cmp)(p1,p2)>0)
	{
	  char *tmp;
	  tmp = *p1;
	  *p1 = *p2;
	  *p2 = tmp;
	}
}

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Salut.
    je ne sais pas ce que tu charche à faire, mais je trouve les assignation :
    *p1=*p2, assez bizard.
    Tu modifies les ponteurs, mais pas les valeurs, ni leur ordre.
    Je modère : je n'ai aucune formation sur les pointeur de pointeur.
    peut être essayer la fonction dans un cas simple avec deux dimension...
    1. Contributeur
      Bon, j'ai testé, le swap par pointeur fonctionne très bien. (au moins j'ai appris quelques chose)
      le problème viens de p2=p1+1 !
      *(p1+1) peux être null des le début, et ça ça crée des erreurs.
      modifie ta première boucle ainsi :$
      for (p1=tab;*(p1+1)!=NULL;++p1)