Pages : 1
#1 Le 02/08/2006, à 08: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, à 09: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, à 09:48
- Sting
Re : Erreur de segmentation
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, à 09: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, à 10:00
- lost-in-the-shell
Re : Erreur de segmentation
Rien à l'horizon mon général .
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
Pages : 1