我正在嘗試爲棋盤遊戲製作網格,我知道該板的最大尺寸,但它也可以根據用戶在命令中輸入的內容線。我做了下面的程序,它編譯成功,但是當我在命令行中寫入維度時,它說'分段錯誤(核心轉儲)'。誰能告訴我我做錯了什麼?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