在c上创建多维数组
您好,创建多维数组需要帮助吗 我是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
#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。这可能是完全不相关的,但如果所有内容都是粗体的,那么就没有什么真正突出的了。格式化是为了引起对文章某一特定部分的注意,但如果你把注意力都吸引到了文章的某一部分,那么你也可能什么都没有引起注意。通常,最好解释一个解决方案,而不是仅仅发布几行匿名代码。您可以阅读,而且通常最好解释一个解决方案,而不是仅仅发布几行匿名代码。你可以阅读,也可以阅读