【发布时间】:2013-05-08 21:48:42
【问题描述】:
我正在尝试为棋盘游戏制作网格,我知道棋盘的最大尺寸,但是根据用户在命令行中输入的内容,它也可以更小。我制作了以下程序,它编译成功,但是当我将尺寸写入命令行时,它显示“分段错误(核心转储)”。谁能告诉我我做错了什么?
#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 个参数,您的程序将会崩溃。
-
@klas 我的命令行是 ./gol 7 6 5
-
那你应该
atoiargv[1]、argv[2]和argv[3]。阅读并遵循 Salgars 答案中的指示。 -
@KlasLindbäck 好的,非常感谢
标签: c arrays for-loop command-line-arguments conways-game-of-life