我是C语言的新手,我正在尝试制作一个包含2种不同情况的2d数组。
第一个是详细模式,输入了2个参数,第二个是数组的大小。
2nd是第一个参数是数组的大小。
问题在于,每当我选择第二个选项时,我都会不断收到“细分错误:11”。但是,如果另一个不在代码中,则这两个选项可以单独工作。在一起,只有第一个选项可以给我正确的结果
int main(int argc, char *argv[])
{
/*
char n1;
sscanf (argv[1],"%c",&n1);
*/
int status, status2, n, n2;
status = sscanf(argv[1], "%d", &n);
status2 = sscanf(argv[2], "%d", &n2);
if (strncmp(argv[1], "-v", 2) == 0) // if we are in VERBOSE MODE
{
int B[n2 + 1][n2 + 1]; // the verbose array
for (int i = 0; i < n2 + 1; i++) // making every element into 0's
{
for (int j = 0; j < n2 + 1; j++)
{
B[i][j] = 0;
}
}
printf("we are in verbose mode\n");
printf("argument 1 is %s\n", argv[1]);
printf("argument 2 is %s\n", argv[2]);
printf("2,2 is %d\n", B[2][2]); // testing
}
else if (status == 1) // if an int is entered -> NOT VERBOSE MODE
{
printf("integer is %d\n", n);
int B[n + 1][n + 1]; // declaring the array
for (int i = 0; i < n + 1; i++) // to make every element 0
{
for (int j = 0; j < n + 1; j++)
{
B[i][j] = 0;
}
}
printf("1,1 is %d\n", B[1][1]); // testing
}
else // if it's a wrong input -> print usage message
{
printf("Usage message\n");
}
return EXIT_SUCCESS;
}
这是else if语句代码给我分段错误,但是我不明白为什么。如果删除第一个“ if”语句中的“ for”循环,则可以使用,但在两种情况下都需要该数组。 (n + 1是大小,因为我希望行/列号与数组的行/列号相匹配。)