gpt4 book ai didi

C 编程 - 基于命令行参数的数组大小

转载 作者:行者123 更新时间:2023-11-30 15:48:56 25 4
gpt4 key购买 nike

我正在尝试为棋盘游戏制作一个网格,我知道棋盘的最大尺寸,但是根据用户在命令行中输入的内容,它也可以更小。我编写了以下程序,它编译成功,但是当我将尺寸写入命令行时,它显示“段错误(核心转储)”。谁能告诉我我做错了什么?

#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]);
}

最佳答案

很多事情

您在声明变量时设置了固定的 BOARD_WIDTH 和 BOARD_HEIGHT,因此如果您传递的值高于命令行上的值,它将不起作用。

但是您主要想打印什么?您尚未将 grid 初始化为任何特定内容,因此您正在打印随机内存。

首先,您必须使用“new”来初始化网格:请在此处查找 Create a 2D array with variable sized dimensions

然后,您必须将这些变量实际初始化为某些值。然后您可以将它们打印出来。

如果您向我们展示您传递给程序的内容,我们会更容易为您提供帮助。但以上所有原因只是一个开始。

此外,如果您不向程序传递 3 个参数,它也会崩溃,因为您正在使用 3 个。

尽管您正在使用 argv[2] 到 argv[4] - 您应该使用 argv[1] 到 argv[3]。因此,在当前状态下,除非您通过 4 个参数,否则它将崩溃。

关于C 编程 - 基于命令行参数的数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16546140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com