У меня есть следующий код, и я хочу повторно преобразовать c его 3 измерения, используя reallo c. Дело в том, что я каждый раз получаю ошибку "segmentation fault". Может ли кто-нибудь мне помочь? Я думаю, что неправильно разыменую указатели. Спасибо.
char ***expandir(char ****A, int row, int col,int *controle_row, int *controle_col){
int i,j,k,flag=0;
*controle_row = 0;
*controle_col = 0;
if(strcmp((*A[row][0])," ")!=0){
flag = 1;
}
while (col == x_x -2){
*controle_col = 1;
x_x+=2;
for(i=0;i<y_y;i++){
(*A[i]) = (char**) realloc((*A[i]),sizeof(char*)*x_x);
for (j = 0; j < x_x; j++)
{
*A[i][j] = (char*)realloc(*A[i][j],sizeof(char)*O);
}
}
for(i = 0; i<y_y; i++){
strcpy((*A[i][x_x-1])," ");
strcpy((*A[i][x_x-2])," ");
}
for(i=0;i<y_y;i++){
for(j=x_x-2;j>=0;j--){
strcpy((*A[i][j+1]),(*A[i][j]));
strcpy((*A[i][j])," ");
}
}
return *A;
}
if(row == y_y - 2){
*controle_row = 1;
y_y+=2;
k_k+=2;
*A = (char ***) realloc(*A,sizeof(char**)*y_y);
for(i=0;i<y_y;i++){
(*A[i]) = (char**) realloc((*A[i]),sizeof(char*)*k_k);
for (j = 0; j < x_x; j++)
{
(*A[i][j]) = (char*)realloc((*A[i][j]),sizeof(char)*O);
}
}
for(i = 0; i<x_x; i++){
strcpy((*A[y_y-1][i])," ");
strcpy((*A[y_y-2][i])," ");
strcpy((*A[y_y-3][i])," ");
}
for(i=y_y-2;i>=0;i--){
for(j=0;j<x_x;j++){
strcpy((*A[i+1][j]),(*A[i][j]));
strcpy((*A[i][j])," ");
}
}
return *A;
}
*controle_col = 0;
*controle_row = 0;
return *A;
}
OBS: x_x, k_k, y_y - все глобальные переменные, имеющие значение 3. Они используются для печати трехмерного массива и выполнения этих повторных блоков. Только эта функция выше изменяет его значения. И значения "O" 3 на # определяют