Bonjour à tous,

J'ai besoin de vos lumières, car je cale!

Voici la déclaration d'une structure:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
typedef struct {
	int nentry;
	char **fullname;
	char **shortname;
	int *pos;
} PLAYLIST;
En fonction du nombre d'entrées à mémoriser, j'alloue la structure de la manière suivante (les tests de malloc==NULL ont été supprimés):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
PLAYLIST *plAlloc(int nentry)
{
	PLAYLIST *pl;
 
	pl=malloc(sizeof(PLAYLIST));
	if(pl!=NULL) {
		pl->fullname=malloc(nentry*sizeof(char *));
		pl->shortname=malloc(nentry*sizeof(char *));
		pl->pos=malloc(nentry*sizeof(int));
		pl->nentry=nentry;
		}
	return(pl);
}
Dans mon esprit:
pl->fullname et pl->shortname sont des 'tableaux' de nentry pointeurs vers des chaines de caractères,
pl->pos est un 'tableau' de nentry int

Enfin, lorsque je remplis ma structure, je le fais (séquentiellement, offset allant de 0 à nentry-1) de la manière suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int plFillList(PLAYLIST *pl,int offset,char *name)
{
	char *sptr;
 
	*(pl->fullname+offset)=malloc(strlen(name)+1);
	if(*(pl->fullname+offset)==NULL) {
		fprintf(stderr,"plFillList: malloc error (%d)\n",offset);
		exit(0);	// n'arrive jamais !
		}
	strcpy(*(pl->fullname+offset),name);
	sptr=strrchr(*(pl->fullname+offset),'\\');
	if(sptr==NULL) sptr=*(pl->fullname+offset);
	*(pl->shortname+offset)=sptr;
	*(pl->pos+offset)=offset+1;
	return(0);		// provisoire
}
Le compilateur ne met aucune warning, mais lors de l'exécution mon programme se plante.

Quelqu'un at-t-il une idée? Mauvaise utilisation de ma part des pointeurs?

Merci d'avance de votre aide.