C++ 使用函数读取文件.txt中的矩阵
我试图通过使用函数读取一个包含矩阵[n]x[m]值的.txt文件,然后在main中调用它,但我遇到了一些问题。。。以下是读取函数:C++ 使用函数读取文件.txt中的矩阵,c++,c,function,file,matrix,C++,C,Function,File,Matrix,我试图通过使用函数读取一个包含矩阵[n]x[m]值的.txt文件,然后在main中调用它,但我遇到了一些问题。。。以下是读取函数: bool read_file(int row, int column, char *file_name, float **elems) { int i, j; FILE *pfile; fopen_s(&pfile, file_name, "r"); if (pfile == NULL) { retu
bool read_file(int row, int column, char *file_name, float **elems)
{
int i, j;
FILE *pfile;
fopen_s(&pfile, file_name, "r");
if (pfile == NULL) {
return false;
}
fscanf_s(pfile, "%d", &row);
fscanf_s(pfile, "%d", &column);
//printf_s("%d %d\n", row,column);
for (i = 0; i < row; i++)
{
for (j = 0; j < column; j++) {
fscanf_s(pfile, "%f", &elems[i][j]);
//printf("%f\n", elems[i][j]);
}
}return true;
}
然后它说matrix1和matrix2是未定义的。。。我理解它们为何未定义,但我的问题是,我不知道如何像使用keybord输入一样定义它们浮点**元素是指向指向浮点数组的指针数组。您可以通过在循环中调用malloc来创建这样的东西
请注意它在代码中的使用方式:
fscanf_s(pfile, "%f", &elems[i][j]);
因此元素[0..N]意味着指向行。首先,分配外部阵列:
float** elems = malloc(row * sizeof(float*));
assert(elems);
每行有一个浮点数。然后,分配每一行:
for (i = 0; i < row; i++)
{
elems[i] = malloc(column * sizeof(float));
assert(elems[i]);
}
现在elems指向一个float*数组,初始化时每个元素都指向一个未初始化数字的float数组。代码中没有矩阵或2D数组,也没有任何可以作为一个数组使用的东西!提供和删除无关语言的标签,C或C++ -选择一个!
for (i = 0; i < row; i++)
{
elems[i] = malloc(column * sizeof(float));
assert(elems[i]);
}