Erreur de segmentation en C
Numéro
-
tafiscobar Messages postés 1281 Statut Contributeur -
tafiscobar Messages postés 1281 Statut Contributeur -
Bonjour,
en compilant ce code ,j'ai un seg fault mais je ne vois pas d'erreur.
Est ce que vous pourriez m'aider.
Merci
en compilant ce code ,j'ai un seg fault mais je ne vois pas d'erreur.
Est ce que vous pourriez m'aider.
Merci
void tri(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 buf[BUFSIZ];
strcpy(buf,*p1);
strcpy(*p1,*p2);
strcpy(*p2,buf);
}
}
void print(FILE *f, char **tab)
{
for( ; *tab!=NULL; ++tab)
fprintf(f,"%s\n",*tab);
}
int main(int argc, char *argv[])
{
char **t = malloc(sizeof(char *)*argc);
if(t == NULL)
{
fprintf(stderr,"erreur \n");
return EXIT_FAILURE;
}
unsigned int l,i;
l = (unsigned int) argc-1U;
for(i = 0; i<l; i++)
{
t[i] = malloc(strlen(argv[i+1])+1);
if(t[i] == NULL)
{
fprintf(stderr,"erreur \n");
return EXIT_FAILURE;
}
strcpy(t[i],argv[i+1]);
}
t[l] = NULL;
print(stdout,t);
tri(t,&strcmp));
print(stdout,t);
return EXIT_SUCCESS;
}
A voir également:
- Erreur de segmentation en C
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- Erreur t32 ✓ - Forum Livebox
- Erreur upes 1025 - Forum Téléviseurs
- Erreur 0x80070643 - Accueil - Windows
- Corriger l'erreur 0x80070643 de la mise à jour KB5034441 de Windows 10 - Accueil - Windows
1 réponse
salut, mwa je ne vois pas d'erreur, en plus je l'ai testé (gcc 4.0), il marche. Maintenant si tu testes ta fonction de tri avec des structures, il ne marchera pas, c'est sûr. En effet, tu utilises strcpy qui n'existe qe pour les char*. Donc soit tu copies les pointeurs et ca marche pour n'importe quel objet mais tu dois faire attention aux fuites de mémoire soit tu demandes une fct de copie ds ta signature et tu l'utilises.