Pages : 1
#1 Le 28/08/2006, à 10:56
- Maxifoot
Erreur de segmentation
Bonjour,
je voudrais savoir pourquoi ce code, me produit une erreur de segmentation :
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 buf[BUFSIZ];
strcpy(buf,*p1);
strcpy(*p1,*p2);
strcpy(*p2,buf);
}
}
Merci
#2 Le 28/08/2006, à 11:03
- Crashforburn
Re : Erreur de segmentation
strcpy(buf,*p1);
Plante si p1 pointe sur un tableau plus long que buf (soit BUFSIZE +1)
Un blog inutile de plus : http://crashforburn.free.fr/dotclear/
[Membre du club des beaux Ubunteros] : http://forum.ubuntu-fr.org/viewtopic.php?pid=535299
Contre la nouvelle année, votons fonacon : http://www.fonacon.net/
Hors ligne
#3 Le 28/08/2006, à 11:16
- Maxifoot
Re : Erreur de segmentation
strcpy(buf,*p1);
Plante si p1 pointe sur un tableau plus long que buf (soit BUFSIZE +1)
Ca se corrige comment ?
#4 Le 28/08/2006, à 11:50
- Crashforburn
Re : Erreur de segmentation
strncpy(buf;*p1,BUFSIZE);
Un blog inutile de plus : http://crashforburn.free.fr/dotclear/
[Membre du club des beaux Ubunteros] : http://forum.ubuntu-fr.org/viewtopic.php?pid=535299
Contre la nouvelle année, votons fonacon : http://www.fonacon.net/
Hors ligne
#5 Le 28/08/2006, à 11:58
- Maxifoot
Re : Erreur de segmentation
strncpy(buf;*p1,BUFSIZE);
Pour les autres, j'ai fait comme ceci :
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 buf[BUFSIZ];
strncpy(buf,*p1,BUFSIZ);
if((*p1 = malloc(strlen(*p2)+1)) == NULL)
return;
strcpy(*p1,*p2);
if((*p2 = malloc(strlen(buf)+1)) == NULL)
return;
strcpy(*p2,buf);
}
}
C'est comme ça ? ou il faut faire autrement ?
#6 Le 28/08/2006, à 19:29
- Crashforburn
Re : Erreur de segmentation
ben utiliser strncpy(); ça revient au même ^^
Sinon ça mfonctionne ?
Un blog inutile de plus : http://crashforburn.free.fr/dotclear/
[Membre du club des beaux Ubunteros] : http://forum.ubuntu-fr.org/viewtopic.php?pid=535299
Contre la nouvelle année, votons fonacon : http://www.fonacon.net/
Hors ligne
#7 Le 28/08/2006, à 20:39
- Visu@lSt@tion
Re : Erreur de segmentation
Pourquoi avoir mis une poste incrémentation alors que tu verifies p1 et que tu travails sur p1+1 ???
[ Site Web - Serveur Perso ]
[ Windows Xp Pro,Windows Serveur 2003, Gentoo 2006.1, Ubuntu 7.04 (Apache2, Php 5 & MySQL5||ORACLE) ]
[ "Un interface chaise clavier défaillant est équivalent à un ordinateur vérolé à la base !" ]
Hors ligne
Pages : 1