Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/08/2006, à 09:04

Sting

Erreur de segmentation

Bonjour,

j'ai pris ce code dans un livre.
Ce code est censé produire une erreur de segmentation dont il faut trouver le (ou les) cause(s).
Comme je n'arrivais pas trouver les erreurs en lisant le code, je l'ai recopié pour pouvoir le compiler.
Le programme compile et s'execute sans problème.
Je voudrais savoir si le programme c'est executé par chance et qu'il y a bien des problèmes quelques parts.
Si c'est le cas, ou seraient-ils ?

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;
	}
}

void printTable(FILE *fdo, char **tab)
{
  for(; *tab!=NULL; ++tab) fprintf(fdo,"%s\n", *tab);
}

int main(int argc, char *argv[])
{
  char **t; unsigned int i,l;
  if((t=(char**)malloc(sizeof(char*)*argc))==NULL)
    {
      fprintf(stderr,"Error in memory allocation\n");
      return EXIT_FAILURE;
    }
  l=(unsigned int)argc-1U;
  for(i=0U; i<l; ++i)
    {
      if((t[i]=(char*)malloc(strlen(argv[i+1])+1))==NULL)
	{
	  fprintf(stderr,"Error in memory allocation\n");
	  return EXIT_FAILURE;
	}
      strcpy(t[i],argv[i+1]);
    }
  t[l]=NULL;
  printTable(stdout,t);
  bubbleSort(t, (int (*)(void *, void *))&strcmp);
  printf("\n");
  printTable(stdout, t);
  return EXIT_SUCCESS;
}

#2 Le 02/08/2006, à 10:10

lost-in-the-shell

Re : Erreur de segmentation

Aucun problème à l'éxecution.
Pour info, c'est quel livre ?


Linux user #401253 - Ubuntu user #3023 .
Nick sur IRC : naji.
Pensez à adhérer au Comité de lutte contre le SMS.

Hors ligne

#3 Le 02/08/2006, à 10:48

Sting

Re : Erreur de segmentation

lost-in-the-shell a écrit :

Aucun problème à l'éxecution.
Pour info, c'est quel livre ?

Juste en lisant le code (sans l'executer), est-ce que tu vois quelques choses qui pourrait clocher ?

#4 Le 02/08/2006, à 10:58

Sting

Re : Erreur de segmentation

J'oubliais aussi de dire que lors de l'execution du programme, le tri n'est pas réalisé mais ceci n'est pas à une erreur de segmentation

#5 Le 02/08/2006, à 11:00

lost-in-the-shell

Re : Erreur de segmentation

Rien à l'horizon mon général neutral .
Je conseille de baliser tout ça avec des printf("%d", __LINE__); (flemme d'ouvrir Vim maintenant, désolé).


Linux user #401253 - Ubuntu user #3023 .
Nick sur IRC : naji.
Pensez à adhérer au Comité de lutte contre le SMS.

Hors ligne