在这段代码中,我从文件中获取数字,其中第一个数字是2D数组的大小。
在我的代码中,我正在定义。
这是我的文件外观: 这是运行代码后控制台应用程序的外观:
在我的代码中,我正在定义。
char *filename=new char;
我必须使用char *filename,这是练习的要求。一切都运行良好,直到我尝试删除。无论是delete还是delete[]都会导致错误并使程序崩溃。
这是我的完整代码:
#include <iostream>
#include <fstream>
using namespace std;
double **readmat(char *filename, int *size)/////question 2
{
ifstream read(filename);
cout << filename << endl;
if (!read)
{
cout << "Can't open file!" << endl;
exit(1);
}
read >> *size;
double **mat = new double*[*size];
for (int i = 0; i < *size; i++)
{
mat[i] = new double[*size];
for (int j = 0; j < *size; j++)
{
read >> mat[i][j];
}
}
read.close();
return mat;
}
int main()
{
int size;
char *filename = new char;
filename = "text.txt";
double **arr = readmat(filename, &size);
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
cout << arr[i][j]<<" , ";
}
cout << endl;
}
cout << endl;
delete filename; //<-------- this crashed my code
for (int i = 0; i < size; i++)
{
delete[] arr[i];
}
delete[] arr;
return 0;
}
这是我的文件外观: 这是运行代码后控制台应用程序的外观:
我期望得到的是这个,但我却收到了以下错误信息:
有人知道这是什么原因导致的吗?我该怎么解决它?
filename =“text.txt”
来覆盖char *filename = new char;
所持有的地址。问自己,“现在filename
指向哪里?” - David C. Rankinfilename
分配一个字符。您可能需要考虑分配更多,例如 64 或 128。 - Thomas Matthews