在c上创建多维数组

在c上创建多维数组,c,arrays,multidimensional-array,C,Arrays,Multidimensional Array,您好,创建多维数组需要帮助吗 我是C的新手,非常感谢您的帮助。 这是代码 #include <stdio.h> char init_board(int row, int col); int main(int argc, char** argv) { int row = argv[3]; int col = argv[4]; char** board = init_board(row, col); for (int

您好,创建多维数组需要帮助吗 我是C的新手,非常感谢您的帮助。 这是代码

#include <stdio.h>

char init_board(int row, int col);

int main(int argc, char** argv) {
        int row = argv[3];
        int col = argv[4];
        char** board = init_board(row, col);

        for (int i = 0; i < row; i++) {
                for (int j = 0; j < col; j++) {
                        printf("%d", board[i][j]);
                }
        }


        return 0;
}

char init_board(int row, int col) {

        int count = 0;
        int count2 = 0;
        char** out;
        while (count < row) {
                while (count2 < col) {
                        out[count][count2] = ".";
                        count2++;
                }
                count++;
                count2 = 0;
        }
        return out;
}

当您写入
int row=argv[3]
您正在生成一个int并将其初始化为
argv[3]
的值。但是,
argv
属于
char**
类型,它是指向指针的指针,或者实际上是
char*
类型的数组。这是一个无效的赋值,您需要创建一个字符缓冲区来读取其中的参数,然后使用
atoi(argv[i])
来获取整数值。

当您写入
int row=argv[3]时
您正在生成一个int并将其初始化为
argv[3]
的值。但是,
argv
属于
char**
类型,它是指向指针的指针,或者实际上是
char*
类型的数组。这是一个无效的赋值,您需要创建一个字符缓冲区来读取其中的参数,然后使用
atoi(argv[i])
来获取整数值。

类型
argv[3]
argv[4]
char*
。因此,这条线

int row = argv[3];
int col = argv[4];
你错了。您正试图用
char*
初始化两个
int
对象

如果使用以下命令运行程序:

program 10 20 30 40
那么

argv[0]
的值将是
“程序”

argv[1]
的值将为
“10”

argv[2]
的值将为
“20”

argv[3]
的值将为
“30”

argv[4]
的值将为
“40”

是的,它们看起来像是命令行中的数字,但它们是C程序中的字符串。您可以使用
atoi
从字符串中提取整数

int row = atoi(argv[3]);
int col = atoi(argv[4]);
确保使用

#include <stdlib.h>
#包括

获取函数的声明。

类型
argv[3]
argv[4]
char*
。因此,这条线

int row = argv[3];
int col = argv[4];
你错了。您正试图用
char*
初始化两个
int
对象

如果使用以下命令运行程序:

program 10 20 30 40
那么

argv[0]
的值将是
“程序”

argv[1]
的值将为
“10”

argv[2]
的值将为
“20”

argv[3]
的值将为
“30”

argv[4]
的值将为
“40”

是的,它们看起来像是命令行中的数字,但它们是C程序中的字符串。您可以使用
atoi
从字符串中提取整数

int row = atoi(argv[3]);
int col = atoi(argv[4]);
确保使用

#include <stdlib.h>
#包括

获取函数的声明。

最初代码中有很多错误,我相信下面的代码就是它应该有的

#include <stdio.h>
#include <stdlib.h>

char **init_board(int row, int col);

int main(int argc, char** argv) {

        int row = atoi(argv[3]);
        int col = atoi(argv[4]);
        char** board = init_board(row, col);

        for (int i = 0; i < row; i++) {
                for (int j = 0; j < col; j++) {
                        board[i][j] = 'x';
                        printf("%c", board[i][j]);
                }
        }


        return 0;
}

char **init_board(int row, int col) {

        char** out = malloc(sizeof(char*) * row);
        for (int i = 0; i < row; i++) 
             out[i] = malloc(sizeof(char) * col);

        return out;
}
#包括
#包括
字符**初始板(整数行,整数列);
int main(int argc,字符**argv){
int row=atoi(argv[3]);
int col=atoi(argv[4]);
字符**板=初始板(行、列);
对于(int i=0;i
最初代码中有很多错误,我相信下面的代码应该是这样的

#include <stdio.h>
#include <stdlib.h>

char **init_board(int row, int col);

int main(int argc, char** argv) {

        int row = atoi(argv[3]);
        int col = atoi(argv[4]);
        char** board = init_board(row, col);

        for (int i = 0; i < row; i++) {
                for (int j = 0; j < col; j++) {
                        board[i][j] = 'x';
                        printf("%c", board[i][j]);
                }
        }


        return 0;
}

char **init_board(int row, int col) {

        char** out = malloc(sizeof(char*) * row);
        for (int i = 0; i < row; i++) 
             out[i] = malloc(sizeof(char) * col);

        return out;
}
#包括
#包括
字符**初始板(整数行,整数列);
int main(int argc,字符**argv){
int row=atoi(argv[3]);
int col=atoi(argv[4]);
字符**板=初始板(行、列);
对于(int i=0;i
int row=argv[3]左侧是一个
int
,右侧是一个
char*
。不兼容的类型-正如警告所告诉您的。您需要将
argv[3]
转换为带有类似
atoi
或更好的
strtol
的int。这可能是完全不相关的,但如果所有内容都是粗体的,那么就没有什么真正突出的了。格式化是为了引起对文章某一特定部分的注意,但如果你把注意力都吸引到了文章的某一部分,那么你也可能什么都没有引起注意左侧是一个
int
,右侧是一个
char*
。不兼容的类型-正如警告所告诉您的。您需要将
argv[3]
转换为带有类似
atoi
或更好的
strtol
的int。这可能是完全不相关的,但如果所有内容都是粗体的,那么就没有什么真正突出的了。格式化是为了引起对文章某一特定部分的注意,但如果你把注意力都吸引到了文章的某一部分,那么你也可能什么都没有引起注意。通常,最好解释一个解决方案,而不是仅仅发布几行匿名代码。您可以阅读,而且通常最好解释一个解决方案,而不是仅仅发布几行匿名代码。你可以阅读,也可以阅读