これで構造体の2次元配列に文字列要素を持つ2次元配列の要素を渡そうとしています。私はコードを作ったが、実行時エラーを受け取る。私はboard2 [i] [j]を初期化しようとしているコードに問題があると思います。どんな助けもありがとうございます。Cプログラミング - 構造体2D配列を初期化する
char ***board;
int i, j, size;
printf("Enter the size of array:");
scanf("%d", &size);
if((board = (char***)malloc(sizeof(char**)*size))==NULL)
{
printf("Memory Allocation failed\n");
return -1;
}
for(i=0; i<size; i++)
{
if((board[i] = (char**)malloc(sizeof(char*)*size))==NULL)
{
printf("Memory Allocation failed\n");
return -1;
}
for(j=0; j<size; j++)
{
if((board[i][j] = (char *)malloc(sizeof(char)*4))==NULL)
{
printf("Memory Allocation failed\n");
return -1;
}
a = rand() % 2;
b = rand() % 2;
if(a==0 && b==0)
strcpy(board[i][j], "ab");
else if(a && b==0)
strcpy(board[i][j], "Ab");
else if(a==0 && b==1)
strcpy(board[i][j], "aB");
else
strcpy(board[i][j], "AB");
}
struct data{
const char *element;
int visited;
};
void board2_initialize(char ***board, int size)
{
struct data **board2;
for(i=0;i<size;i++)
{
for(j=0;j<size;j++)
{
board2[i][j].element = board[i][j];
board2[i][j].visited = 0;
printf("%s", board2[i][j].element);
}
}
}
はEDIT:初期化はあなたがboard
配列を行う関数内
。確かに、それはクラッシュします。コードの一部を残しましたか? – jv42
board2と同じ方法でboard2を割り当てようとしましたが、エラーが発生しました。 :/ – BluPixel
rand()には種をつけていないことを意味します。これは、毎回同じパターンを生成するという結果をもたらし、ランダムではありません。 – foo