Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用函数读取文件.txt中的矩阵_C++_C_Function_File_Matrix - Fatal编程技术网

C++ 使用函数读取文件.txt中的矩阵

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

我试图通过使用函数读取一个包含矩阵[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) {
        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]);
}