gpt4 book ai didi

C 编程 - 初始化结构二维数组

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:38 25 4
gpt4 key购买 nike

好的,所以我正在尝试将带有字符串元素的二维数组的元素传递给结构中的二维数组。我编写了一个代码,但它收到一个运行时错误。我认为在我尝试初始化 board2[i][j] 的代码中存在问题。感谢您的帮助。

  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);
}
}
}

编辑:忘记提及初始化将发生在函数内部

最佳答案

您分配它的方式与分配board 数组的方式相同:

struct data **board2 = malloc(sizeof(struct data *) * size);

for(i = 0; i < size; i++)
{
board2[i] = malloc(sizeof(struct data) * size);

for(j = 0; j < size; j++)
{
/* ... */
}
}

关于C 编程 - 初始化结构二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10107503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com