首页 > 解决方案 > 访问冲突写入位置 - 二维字符数组

问题描述

我正在尝试在 Windows 控制台中制作蛇克隆。我正在尝试使用此功能绘制边框:

void drawBorder(uint16_t width, uint16_t height)
{
    char **a=NULL;

 a = malloc(sizeof(char) * height);
    for (uint16_t i = 0; i < height; i++)
        a[i] = malloc(sizeof(char) * width);

    for (uint16_t i = 0; i < height; i++)
    {
        for (uint16_t j = 0; j < width; j++)
        {
            if (j == 0 || j == width - 1 || i == height - 1 || i == 0)
                a[i][j] = '#';
            else
                a[i][j] = ' ';
        }
    }

    for (uint16_t i = 0; i < height; i++)
    {
        for (uint16_t j = 0; j < width; j++)
        {
            printf("%c", a[i][j]);
        }
        printf("\n");
    }

}

如果通过的高度大于 32,我会收到“访问冲突写入位置”错误。如果它小于或等于 32,它似乎工作正常。

标签: c

解决方案


推荐阅读