C++ 将字符读取到矩阵时出错
我正试图将文件中的文本读入字符矩阵 我是这样做的:C++ 将字符读取到矩阵时出错,c++,C++,我正试图将文件中的文本读入字符矩阵 我是这样做的: char** crearMundo() { ifstream input("C:\\Users\\JhonAlx\\Desktop\\file.txt"); input >> filas; input >> columnas; filas += 2; columnas += 2; char** laberinto = crearMatriz(fila
char** crearMundo()
{
ifstream input("C:\\Users\\JhonAlx\\Desktop\\file.txt");
input >> filas;
input >> columnas;
filas += 2;
columnas += 2;
char** laberinto = crearMatriz(filas, columnas);
//Initial fill
for(int i = 0; i < filas; i++)
{
for(int j = 0; j < columnas; j++)
{
laberinto[i][j] = ' ';
}
}
//Next two loops will fill only borders
for(int i = 0; i < filas; i++)
{
laberinto[0][i] = '?';
laberinto[filas - 1][i] = '?';
}
for(int i = 0; i < columnas; i++)
{
laberinto[i][0] = '?'; //VS throws error in this line
laberinto[i][columnas - 1] = '?';
}
//Fill actual content of file, omitting borders
for(int i = 1; i < filas - 1; i++)
{
for(int j = 1; j < columnas - 1; j++)
{
input >> laberinto[i][j];
}
}
return laberinto;
}
今天早上我对它进行编程时,一切正常,但现在它抛出了以下错误:
访问冲突读取位置0xfdfdfd
使用VS2012进行调试并使用本地资源管理器查看,我在ifstream变量上获得以下文本:
输入{\u Filebuffer={\u Set\u eback=0xCCCC<
读取的字符时出错
字符串。>
_Set_egptr=0xCCCC<
读取字符串的字符时出错。>
...}
}标准::基本\u ifstream>
欢迎提供任何帮助。替代方法-将文件读入字符串,然后使用c_str获取字符数组。 例如:
在第一组和最后一组循环(双嵌套循环)中,索引限制是针对filas然后是columnas设置的。然而,中间两种划定边界的方法是不同的,可能是错误的。请注意4个连续循环使用的索引:
laberinto[0..filas-1][0..columnas-1] -- fill with ' ' (ok: filas, then columnas)
laberinto[0,filas-1][0..filas-1] -- first borders (bad: filas, then filas)
laberinto[0..columnas-1][0,columnas-1] -- second borders(bad: columnas, then columnas)
laberinto[0..filas-2][0..columnas-2] -- read from file(ok: filas, then columnas)
错误的可能原因是由于在边界循环中使用了错误的索引而超出了数组边界;可能的解决办法是纠正这个问题。Mmmm,我不明白为什么第二个循环不好,请您再解释一下,好吗?虽然我只是用filas和columnas的一些固定值测试了我的代码,但我再次得到了错误:只是用forint I=0修复了它;i
laberinto[0..filas-1][0..columnas-1] -- fill with ' ' (ok: filas, then columnas)
laberinto[0,filas-1][0..filas-1] -- first borders (bad: filas, then filas)
laberinto[0..columnas-1][0,columnas-1] -- second borders(bad: columnas, then columnas)
laberinto[0..filas-2][0..columnas-2] -- read from file(ok: filas, then columnas)