我正在尝试为棋盘游戏制作网格,我知道该板的最大尺寸,但它也可以根据用户在命令中输入的内容线。我做了下面的程序,它编译成功,但是当我在命令行中写入维度时,它说'分段错误(核心转储)'。谁能告诉我我做错了什么?C编程 - 基于命令行参数的数组大小
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BOARD_WIDTH 80
#define BOARD_HEIGHT 52
int i;
int j;
int width;
int height;
int generations;
int grid[BOARD_WIDTH][BOARD_HEIGHT];
int main(int argc, char *argv[])
{
if (argc < 2)
{
printf("Not enough arguments entered\n");
exit(1);
}
else
{
width = atoi(argv[2]);
height = atoi(argv[3]);
generations = atoi(argv[4]);
}
for(i=0;i<width;i++)
for(j=0;j<height;j++)
printf("%2d", grid[i][j]);
}
你的命令行是什么?如果只输入2个参数,程序将会崩溃。 – 2013-05-14 14:42:20
@klas我的命令行是./gol 7 6 5 – Ibz 2013-05-14 14:47:38
那么你应该'atoi'' argv [1]','argv [2]'和'argv [3]'。阅读并遵循Salgars答案中的指针。 – 2013-05-14 14:50:38