基于用户输入在C中创建二维数组
我正在尝试为一个依赖于用户输入的游戏创建一个动态2D数组。我目前有一个分配内存的函数,如下所示:基于用户输入在C中创建二维数组,c,arrays,dynamic,2d,C,Arrays,Dynamic,2d,我正在尝试为一个依赖于用户输入的游戏创建一个动态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);
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);
}
}
但我希望得到:
..
..
..
这是动态创建网格的正确方法吗?随着游戏的进行,网格可以被覆盖?二维动态数组和它的输出之间没有关系。您希望以什么方式获得输出取决于您。从printf中删除\n(“%c\n”,gridArray[i][j]);语句,您将获得预期的输出。[注释太长] 这里介绍了
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];
您的输出与动态分配此数组的方式无关,仅取决于传递给函数
printf
的内容。通过在第一次调用printf
char**
时删除\n
可以获得所需的输出char**
不是二维数组,也不能指向一个数组或用作一个数组!并使用自解释的名称作为参数argc
和argv
完全是无用的,它们是误码。嗯,malloc
ed对象不会消失。它们会泄漏,因为代码无法再访问它们。
void gridInit(int argc, char** argv) {
char gridArray[MAX_COLUMN][MAX_ROW];
...
char gridArray[MAX_COLUMN][MAX_ROW];