Reallo c трехмерный массив функцией - PullRequest
0 голосов
/ 11 июля 2020

У меня есть следующий код, и я хочу повторно преобразовать 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 на # определяют

...