1
因此,我們正在學習如何使用帶有malloc的動態數組等等,我基本上正努力學習如何使用這個東西。在表面上,我想要做的是讓用戶輸入一個填字遊戲,讓程序解決它,但我甚至無法通過成功存儲拼圖的第一步。將用戶輸入和動態分配給一個二維數組C
繼承人我的代碼:
#include <stdio.h>
#include <stdlib.h>
int main(){
char *userInput = malloc (sizeof(char)*4);
// allocates columns with a length of 4?
char **grid = malloc(sizeof(char)*4);
int i, j;
for(i=0; i<4; i++){
scanf("%s", userInput);
for (j=0; j<4; j++){
// allocates rows with a length of 4?
grid[i] = (char*) malloc (sizeof(char)*4);
grid[i][j] = userInput[j];
}
}
printf("%c", grid[0][2]);
return 0;
}
它現在硬編碼的,但它會問網格的大小,但它是什麼做的是一個4x4的填字遊戲,並把每個字母爲字符數組,後來它會在拼圖中找到單詞。我現在想要做的就是接受用戶輸入並將其放入網格中。關於我想用我的代碼做什麼的示例是
Input:
abcd
efgh
ijkl
mnop
Output:
c
但是最終被吐出的是垃圾。
我正在使用代碼塊,但是當我調試malloc數組並且將它們設置爲'watch'時,我不知道它們是什麼。它向我展示了他們在記憶中的位置,但我不知道輸入了什麼,所以我甚至無法檢查發生了什麼。任何幫助,將不勝感激。
'字符**網格= malloc的(的sizeof(char)的* 4);''到的sizeof(字符*)' – luoluo
[請不投射的malloc'()的結果在'C.] (http://stackoverflow.com/questions/1565496/specifically-whats-dangerous-about-casting-the-result-of-malloc) –
使用'char ** grid = malloc(4 * sizeof * grid);'。避免讓尺寸錯誤。 – chux