我正在尝试为依赖于用户输入的游戏创建动态2D数组。我目前有一个分配内存的功能:
void mallocGrid(int argc, char** argv) {
int i;
char* height;
char* width;
int inputHeight = strtol(argv[3], &height, 10);
int inputWidth = strtol(argv[4], &width, 10);
char** gridArray = malloc(sizeof(char*) * inputHeight);
for (i = 0; i < inputHeight; i++){
gridArray[i] = malloc(sizeof(char) * inputWidth);
}
}
我有另一个函数用'。'来弹出这个网格数组。字符。这是我现在拥有的:
void gridInit(int argc, char** argv) {
char gridArray[MAX_COLUMN][MAX_ROW];
int i, j;
char* height;
char* width;
int inputHeight = strtol(argv[3], &height, 10);
int inputWidth = strtol(argv[4], &width, 10);
for(i=0; i < inputWidth; i++) {
for(j=0; j < inputHeight; j++) {
gridArray[i][j]= '.';
printf("%c\n", gridArray[i][j]);
}
fputc('\n', stdout);
}
}
但是,当用户输入2的高度和3的宽度时,会出现以下情况:
.
.
.
.
.
.
但我期待得到:
..
..
..
这是动态创建可随着游戏进程而被覆盖的网格的正确方法吗?
答案 0 :(得分:0)
没有2-D动态阵列的关系。它的输出......你想以什么方式得到你的输出是你的...从printf中删除\ n(&#34;%c \ n&#34;,gridArray [i] [j]);声明,您将获得您期望的输出。
答案 1 :(得分:0)
[评论太久了]
此处的gridArray
的两个定义
void mallocGrid(int argc, char** argv) {
...
char** gridArray = malloc(sizeof(char*) * inputHeight);
在这里
void gridInit(int argc, char** argv) {
char gridArray[MAX_COLUMN][MAX_ROW];
...
是独立的。每个都定义自己的变量。没有任何共同点,但名称。甚至类型也不同。
当函数离开时,两个变量的定义都“消失”。
我正在尝试为依赖于用户输入的游戏创建动态2D数组。
你不在这里这样做:
char gridArray[MAX_COLUMN][MAX_ROW];