c - 访问冲突写入位置 - 二维字符数组
问题描述
我正在尝试在 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,它似乎工作正常。
解决方案
推荐阅读
- reactjs - React 中的 useCallback 似乎不允许我更新父级中的状态
- python - 显示在文件python中创建的数字总数的程序
- c - 在c程序中打印单词的每个字符
- spring - 使用 StreamingResponseBody 通过 Spring Boot 流式传输数据的 Java 客户端
- sql - 在 BigQuery 中拆分字符串并转换为整数
- javascript - 时区之间的转换似乎仍然使用机器的时区
- typescript - 使用 Nuxt、Typescript、GraphQL 和刷新令牌进行用户身份验证
- css - 在 Font Awesome 图标周围添加圆形边框
- sqlite - 在sqlite中递归地将自己的列连接到父列
- python - 雪花连接器的光标执行中的单引号