【问题标题】:how do I let users input a dynamic 2D array?如何让用户输入动态二维数组?
【发布时间】:2022-11-25 22:30:49
【问题描述】:
int main(){
int limit_x;
int limit_y;
scanf("%d", &limit_x);
scanf("%d", &limit_y);
char map[limit_x][limit_y];
    for (int index_x=0;index_x<limit_x;index_x++)
    {
        for (int index_y = 0; index_y < limit_y; index_y++)
        {
            scanf("%c", &map[index_x][index_y]);
        }
    }
}

这就是我尝试这样做的方式,但它对我不起作用。 它显示错误 C2057、C2466。

让用户输入行和列,并通过输入制作一个动态的二维数组映射。

【问题讨论】:

  • char map[x][y]; 是一个可变长度数组,一些编译器,尤其是微软的,不支持。您需要使用动态分配(例如:malloc
  • @hu xiuleiwe 显示错误信息。
  • “标识符”:未知大小,“标识符”:缺少下标,无法分配常量大小为 0 的数组 @VladfromMoscow
  • @UnholySheep THX 我会试试的
  • 微软编译器不支持 VLA - 因此出现错误。

标签: c


【解决方案1】:
int x;
int y;
scanf("%d", &x);
scanf("%d", &y);
char** map = malloc(sizeof(char*) * x);
for (int index=0; index < x; index++)
{
    map[index] = malloc(sizeof(char) * y);
}
for (int index_x=0;index_x<x;index_x++)
{
    for (int index_y = 0; index_y < y; index_y++)
    {
        scanf("%c", &map[index_x][index_y]);
    }
}

现在正在为我工​​作,谢谢@UnholySheep;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多