好吧,所以我試圖將二維數組的元素與字符串元素傳遞給結構中的二維數組。我做了一個代碼,但它收到一個運行時錯誤。我認爲在我試圖初始化board2 [i] [j]的代碼中存在一個問題。任何幫助表示讚賞。C編程 - 初始化一個結構二維數組
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);
}
}
}
編輯:忘了提,初始化發生在函數內部
你不分配board2任何地方。所以確定,它會崩潰。你把你的代碼的一部分留下了嗎? – jv42 2012-04-11 14:09:43
我試着以board1相同的方式分配board2,但它收到一個錯誤。 :/ – BluPixel 2012-04-11 14:12:15
你永遠不會種子rand(),這意味着它的種子是1,這樣每次都會產生相同的模式,所以它不是隨機的。 – foo 2012-04-11 14:27:22