Bonjour, j'ai un probleme sur la fonction realloc.
J'ai un tableau de char dynamique à deux dimensions :
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).
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 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; }
Mais ça me fait toujours un segmentation fault lors de l'execution, et je ne vois pas trop d'où vient le probleme...
Merci d'avance
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 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; } } }
Partager