Segmentation FAULT

Fermé
wachbaik Messages postés 55 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 25 septembre 2012 - 8 nov. 2009 à 14:29
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 11 nov. 2009 à 09:33
Bonjour,
j'essaye de faire un petit programme pour faire un tableau avec de pointeurs en C et j'ai une SEGMENTATION FAULT au niveau indiqué dans le code ci-dessous .
je ne comprend pas pourquoi.les affichages intermediaires à l'interieur des boucles lors de la saisit de données fonctionnent.
il y a juste le tablePtr qui plante.à la fin si quelqu'un peut m'aider.
.

char *** ptrTable;
printf(" ligne : %d colonne : %d ",LIG , COL);
ptrTable=(char***)malloc((LIG+1)*sizeof(char**)))==NULL ;
int i,j;
char** baladeurLIG=*ptrTable;
char* baladeurCOL;
printf("\n");
for(i=0;i<LIG;i++){
if((baladeurLIG=(char**)(malloc((COL+1)*sizeof(char*))))==NULL){
printf("MALLOC ERROR");
exit(-1);
}
baladeurCOL=*baladeurLIG ;
for(j=0;j<COL;j++){
printf("Entrez Donnée %d :",j);
if((ptrChar=fgets(ligne,1024,stdin))!=NULL){
if((baladeurCOL=(char*)malloc((strlen(ptrChar)+1)*sizeof(char)))==NULL){
printf("MALLOC ERROR");
exit(-1);
}

printf("1-\t%s",baladeurCOL);
strncpy(baladeurCOL,ptrChar,strlen(ptrChar));
printf("2-\t%s",baladeurCOL);

}
baladeurCOL++;
}
baladeurLIG++;
}
printf(" %p , %s ",ptrTable,**ptrTable); ====>quand j'ajoute cette ligne j'ai une segmentation fault
//baladeurLIG = *ptrTable;
printf("**** AFFICHAGE DU TABLEAU *****");

3 réponses

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
8 nov. 2009 à 21:44
ton code est difficilement lisible... peux-tu éditer ton message en mettant les balises < code > ? (bouton à droite de gras, italique, souligné)
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
8 nov. 2009 à 21:45
j'ai beaucoup de mal en outre à comprendre ce que tu veux vraiment faire avec cette ligne :
ptrTable=(char***)malloc((LIG+1)*sizeof(char**)))==NULL ;
0
wachbaik Messages postés 55 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 25 septembre 2012
11 nov. 2009 à 08:07
désolé pour ma réponse si tardive. Normalement cette ligne était entourer d'un if :
if(ptrTable=(char***)malloc((LIG+1)*sizeof(char**)))==NULL ){
exit(-1);
}
enfin soit j'ai résolu ce problème.
Maintenant j'ai un nouveau soucis toujours avec des pointeurs et une segmentation fault.
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
11 nov. 2009 à 09:33
segmentation fault signifie le plus souvent que tu accèdes à une mauvais adresse mémoire, par exemple un indice de tableau hors-limite.

Ex : si tu fais:

int a[50];
int b=50;
a[b]=34;

la dernière ligne cause une segmentation fault si je ne m'abuse.
0