gpt4 book ai didi

c++ - 输入和输出的二维字符数组问题

转载 作者:行者123 更新时间:2023-11-30 05:29:43 24 4
gpt4 key购买 nike

我在处理这个家庭作业问题时遇到了一些麻烦。我们基本上是在制作一个由角色组成的“迷宫”。但是,我不确定如何开始,因为我在创建 2D 字符数组时遇到了问题。这是我当前的代码:

char** read_labyrinth  (int* rows, int* cols)
{
cin >> *rows >> *cols;

char **labyrinth = NULL;
labyrinth = new char*[(*rows)]

for (int i = 0; i < (*rows); i++)
{
labyrinth[i] = new char[(*cols)];
}

for (int i = 0; i < (*rows); i++)

{
cin >> labyrinth[i];
}

return labyrinth;
}

我也有这个来打印迷宫,但什么也打印不出来。该程序开始做类似 ./labyrinth > labyrinth1.in 的事情其中文本文件有两个行数和列数,以及一堆要填充的字符,例如 #*,但我没有输出任何内容。如果有的话,行和列似乎设置了垃圾值,所以我想我一定是在做一些非常错误的事情。这是打印功能

void print_labyrinth (char** maze, int rows, int cols)
{
for (int i = 0; i < rows; i++)
{
cout << maze[i];
}

}

感谢您的帮助。我迷路了。

最佳答案

让我们从 2D 需要二维开始,我的意思是,对于输出你需要两个嵌套的 for 循环(这适用于任何类型的数据,不仅适用于 char,当然汽车的输出可以使用 C 风格的字符串,即 char*,如果你存储 '\0' - 现在你不!),例如:

void print_labyrinth (char** maze, int rows, int cols)
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
cout << maze[i][j];
}
cout << endl;
}

}

我在内存分配和填充部分看到的类似问题...考虑在 read_labyrinth 的第一个循环内使用 cin >> maze[i] 更改和移动循环,例如:

   for (int i = 0; i < (*rows); i++)
{
// memory allocation for row
maze[i] = new char[(*cols)];
// data reading to allocated mempory
for (int j = 0; j < (*cols); j++)
{
cin >> maze[i][j];
}
}

此外,我还建议您在将内容写入内存之前使用 if(maze != NULL)if(maze[i] != NULL) 检查内存分配结果

关于c++ - 输入和输出的二维字符数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36300009/

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