C编程-初始化结构2D数组
好的,我正在尝试将带有字符串元素的2D数组的元素传递给struct中的2D数组。我编写了一个代码,但它收到了一个运行时错误。我认为我试图初始化board2[I][j]的代码中存在问题。感谢您的帮助C编程-初始化结构2D数组,c,arrays,string,struct,C,Arrays,String,Struct,好的,我正在尝试将带有字符串元素的2D数组的元素传递给struct中的2D数组。我编写了一个代码,但它收到了一个运行时错误。我认为我试图初始化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)
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);
}
}
}
char***板;
int i,j,大小;
printf(“输入数组的大小:”);
scanf(“%d”,大小(&S);
如果((board=(char***)malloc(sizeof(char**)*size))==NULL)
{
printf(“内存分配失败\n”);
返回-1;
}
对于(i=0;i而言,分配它的方式与分配板
阵列的方式相同:
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++)
{
/* ... */
}
}
struct data**board2=malloc(sizeof(struct data*))*size;
对于(i=0;i
您分配它的方式与分配板的方式相同
阵列:
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++)
{
/* ... */
}
}
struct data**board2=malloc(sizeof(struct data*))*size;
对于(i=0;i
您没有在任何地方分配board2。因此,它肯定会崩溃。您是否遗漏了部分代码?我尝试以与board1相同的方式分配board2,但它收到一个错误。:/You never seed rand(),这意味着它的种子是1。这会导致每次都产生相同的模式,所以它根本不是随机的。@foo你说的种子rand()是什么意思?对不起,我只有2个月的编程经验:p@BluPixel有一个名为srand()的函数,应该用来为rand()设定种子.它用一个起点初始化rand,通常用time(NULL)作为参数调用,如:srand(time(NULL));。您只需执行一次。您没有在任何地方分配board2。因此,它肯定会崩溃。您是否遗漏了部分代码?我尝试过以与board1相同的方式分配board2,但它收到一个错误。:/You never seed rand(),这意味着它的种子是1。这会导致每次都产生相同的模式,所以它根本不是随机的。@foo你说的种子rand()是什么意思?对不起,我只有2个月的编程经验:p@BluPixel有一个名为srand()的函数,应该用来为rand()设定种子。它用一个起始点初始化rand,通常用time(NULL)作为参数调用,如:srand(time(NULL));。您只需执行一次。如果我尝试在函数中初始化board2,这是否有效?我尝试过,但收到错误。“从void*到数据的转换无效**”。如果我尝试在函数中初始化board2,这会起作用吗?我尝试过,但收到错误。“从void*到数据**的转换无效”。