【发布时间】:2017-12-09 12:45:07
【问题描述】:
在int d = atoi(argv[2]); 行中似乎有问题。 “作为参数 1 传递的空指针...”
我能做什么?
#include <cs50.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, string argv[])
{
int num;
int i = 1;
int j = 1;
int board [i][j];
// 2nd CL argument is size of grid.
if (argc != 2)
{
return false;
}
int d = atoi(argv[2]);
if (d <= 0)
{
return false;
}
// setting up board.
// number of tiles needed.
num = d * d - 1;
// iterating over columns and rows
for (i = 0; i <= d; i++)
{
for (j = 0; j <= d; j++)
{
// set values.
board[i][j] = num;
num --;
}
printf ("%d", board[i][j]); // TESTING.
printf ("\n");
}
// if even swap 1 & 2. Don't display 1.
}
【问题讨论】:
-
错误信息的哪一部分你不明白?
-
程序强制执行 2 个参数,但随后尝试检查第三个参数。请记住,程序调用本身被计为一个参数,并且数组是零索引的。
-
argv[2]是argv[]的第三个 元素;argc == 2时没有 argv[3]。
标签: c cs50 null-pointer