problème lors de l'assignation d'une matrice de string avec strcpy
bonjour,
j'ai un problème pas évident: j'ai une structure qui contient une matrice de string.
Code:
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:
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:
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:
1 2 3
| char* chaine = "texte";
strcpy(*jeu.plateau[0][0],chaine); |
ou meme:
Code:
strcpy(*jeu.plateau[0][0],"chaine");
le programme compile mais plante.
donc pour résumer :
Code:
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