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

时间:2017-05-13 02:13:35

标签: c++ c function file matrix

我试图通过使用函数读取矩阵[n] x [m]的值的.txt文件,然后在我的主函数中调用它但我遇到了一些问题......这是读取函数:

int main(){
int i, j, row1, column1, row2, column2;

char* file_name1 = { "C:\\Users\\Lc\\Documents\\Matrix1.txt" };
char* file_name2 = { "C:\\Users\\Lc\\Documents\\Matrix2.txt" };
if (...) {
    ...
    /* Input by keybord. */ 
    ...
}     
else if(...){  /*Input by file*/
read_file(row1, column1, file_name1, matrix1);
read_file(row2, column2, file_name2, matrix2);
...
}
...

我的程序要求我在两个矩阵之间做产品,我必须通过两种类型的输入,键盘或文件来完成。我用我的主要if-else在2个输入之间进行选择。当它进行键盘输入时,一切正常(dinamic alocation和矩阵的乘积一样)。然后我在main中调用这个函数:

$("#gate").val('Gateway 2');
$("#gate").selectmenu('refresh');

然后它说矩阵1和矩阵2未定义...我明白为什么它们未定义但我的问题是我不知道如何定义它们就像我用键盘输入一样

1 个答案:

答案 0 :(得分:0)

float **elems是指向浮点数组指针数组的指针。你可以通过在循环中调用malloc()来创建这样的东西。

请注意您在代码中使用的方式:

fscanf_s(pfile, "%f", &elems[i][j]);

所以elems[0..N]意味着指向行。首先,分配外部数组:

float** elems = malloc(row * sizeof(float*));
assert(elems);

每行float*一个。然后,分配每一行:

for (i = 0; i < row; i++)
{
    elems[i] = malloc(column * sizeof(float));
    assert(elems[i]);
}

现在elems指向一个float*数组,其中每个元素都指向float数组(这些数字未初始化)。