bonjour,

j'ai un problème pas évident: j'ai une structure qui contient une matrice de string.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
typedef struct plateau2d plateau2d;
struct plateau2d
{
    int taille_carre;
    int largeur;
    int hauteur;
    char*** plateau;
};
l'allocation en memoire fonctionne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
jeu.plateau= (char***) malloc(sizeof(char**) * nbr_carre_largeur );
    for (i=0; i < nbr_carre_largeur ;i++)
		jeu.plateau[i] = (char**) malloc(sizeof(char[TAILLE_MAX]) * nbr_carre_hauteur);
et l'initialisation de cette matrice fonctionne aussi:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
void init_plateau ( plateau2d jeu )
{
    int i,j;
    for(i=0;i < jeu.largeur ; i++)
    {
        for(j=0; j < jeu.hauteur ; j++)
        {
            jeu.plateau[i][j] = "mur.jpg";
        }
    }
}
par contre si je fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
char* chaine = "texte";
 
strcpy(*jeu.plateau[0][0],chaine);
ou meme:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
strcpy(*jeu.plateau[0][0],"chaine");
le programme compile mais plante.

donc pour résumer :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
jeu.plateau[0][0]="chaine";    // ca ca marche
strcpy(jeu.plateau[0][0],"chaine"); // ca ca marche po
Quelqu'un a une idée?


edit: je viens de trouvé quelque chose qui fonctionne:
aussi bizare que ca puisse paraitre :

jeu.plateau[i][j] = chaine; // ca fonctionne

je ne savais pas que les assignations sur les strings fonctionnait (a moins qu'il ne s'agit que du pointeur).

edit2: c'est bien ce qu'il me semblait: l'assignation se fait sur les pointeurs donc ca ne va pas.

par contre :
strcpy(chaine2,chaine); // ca ca marche

donc je bute vraiement la dessus :

strcpy(jeu.plateau[0][0],chaine); // ca ca marche pas