Bonjour à tous et déjà merci pour votre aide.

J'aimerai allouer un tableau de type "info" via une fonction mais ça ne marche pas, je met le bout de code qui plante :

le .h :

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
 
typedef struct info
{
    int frame, ctr;
    SDL_Rect delim;
}info;
 
typedef struct animE
{
    info *joueur;
    info *fleur, *mage;
}animE;
 
void initAnim(char emplacementFichier[], info anim[]);
void initAnimD(void);
et le .c :

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
 
animE anim;
 
void initAnimD(void)
{
    initAnim("Ressource/Anim/Hero.anim", anim.joueur);
 
 
}
 
void initAnim(char emplacementFichier[], info anim[])
{
 
    FILE *animF = NULL;
    int nombreAnim = 0, i;
 
    animF = fopen(emplacementFichier, "r");
    fscanf (animF, "%d\n", &nombreAnim);
 
    anim = malloc(nombreAnim*sizeof(info));
 
    for (i=0; i<nombreAnim;i++)
    {
 
        fscanf (animF, "%d,%d,%d,%d,%d,%d\n",&anim[i].frame,&anim[i].ctr
                                            ,&anim[i].delim.x, &anim[i].delim.y
                                            ,&anim[i].delim.w, &anim[i].delim.h);
    }
 
    fclose (animF);
 
 
}
Donc la fonction "initAnimD" est appelée dans le main et demande, depuis un fichier .anim, de remplir un tableau qui gère les animations (ici pour le héros, mais le but est de pouvoir remplir d'autre tableau comme pour les monstres juste en appelant la fonction "initAnim").

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
initAnim("Ressource/Anim/Hero.anim", anim.joueur); // Envoi le tableau joueur
initAnim("Ressource/Anim/Mage.anim", anim.mage); // Envoi le tableau mage (un monstre)

Donc tant que je suis dans la fonction : "initAnim" je peut avoir accès aux valeurs stockées dans le tableau, avec un printf par exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
printf ("%d\n", anim[1].ctr);
Mais une fois de retour dans la fonction "initAnimD" je n'ai plus accès au tableau joueur.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
void initAnimD(void)
{
    initAnim("Ressource/Anim/Hero.anim", anim.joueur);
    printf ("%d\n", anim.joueur[1].ctr); // Ici le programme plante
 
 
}
J'en conclus que le tableau est mal alloué mais je ne sais pas quoi faire pour régler le problème.

Merci.