Probleme de realloc sur un tableau 2d.
Bonjour, j'ai un probleme sur la fonction realloc.
J'ai un tableau de char dynamique à deux dimensions :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| char **creer_grille(int col,int lignes) {
int i,j;
char **p4=malloc(lignes*sizeof(*p4));
if(p4==NULL) { printf("L'allocation n'a pas march\n"); exit(EXIT_FAILURE); }
for(i=0;i<lignes;i++) {
p4[i]=malloc(col*sizeof(p4[i]));
if(p4[i]==NULL) { printf("L'allocation n'a pas march\n"); exit(EXIT_FAILURE); } }
for(i=0;i<lignes;i++)
for(j=0;j<col;j++)
p4[i][j]=' ';
return p4; } |
J'ai une fonction 'placerpion' qui lorsque la colonne choisie par l'utilisateur est remplie, on ajoute 10 lignes au tableau (via la fonction realloc).
Mais ça me fait toujours un segmentation fault lors de l'execution, et je ne vois pas trop d'où vient le probleme...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| void placerpion(char **p4,int colonnes,int lignes,char *joueuractuel) {
int choixcol,i,j;
if(*joueuractuel=='X' || *joueuractuel=='O') {
printf("Choisissez la colonnes o vous voulez placer votre pion : ");
scanf("%d",&choixcol);
if(p4[(lignes-1)][choixcol] != ' ') { /* Si colonne remplie, alors allouer 10 lignes de + */
realloc(p4,(lignes+=10)*sizeof(p4));
for(i=(lignes-10);i<lignes;i++)
p4[i]=malloc(colonnes*sizeof(p4));
for(i=(lignes-10);i<lignes;i++) { /* on remplit les nouvelles lignes de ' ' */
for(j=0;j<colonnes;j++)
p4[i][j]=' '; } }
for(i=0;i<lignes;i++) /* Placer le pion du joueur à la case voulue */
if(p4[i][choixcol] == ' ') {
p4[i][choixcol]=*joueuractuel;
break; } } } |
Merci d'avance