使用函数读取文件.txt中的矩阵
using function to read a matrix in file .txt
我试图使用函数读取具有矩阵 [n]x[m] 值的.txt文件,然后在我的主文件中调用它,但我遇到了一些问题......下面是读取函数:
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 %dn", row,column);
for (i = 0; i < row; i++)
{
for (j = 0; j < column; j++) {
fscanf_s(pfile, "%f", &elems[i][j]);
//printf("%fn", elems[i][j]);
}
}return true;
}
我的程序要求我在两个矩阵之间做乘积,我必须通过 2 种类型的输入、键码或文件来完成。我在我的主 if-else 中使用了 2 个输入之间进行选择。当它进行键盘输入时,一切都会正常(动态定位以及矩阵的乘积都在工作(。然后我主要调用这样的函数:
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);
...
}
...
然后它说矩阵 1 和矩阵 2 是未定义的......我明白为什么它们未定义,但我的问题是我不知道如何定义它们,就像我对键盘输入所做的那样
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
数组(哪些数字未初始化(。
相关文章:
- 如何将 txt 文件中的行分隔为组件C++
- 无法打开.txt文件
- 如何使用CLion在Mac上创建一个新的.txt文件
- 使用fstream对txt文件中的数字进行循环
- Visual Studio在尝试读取resource.txt文件时崩溃
- 如何从txt文件中读取多个不同长度的数组?
- 在一次迭代中从 txt 文件中读取多行
- 通过比较C++中的行在 txt 文件中搜索的最简单方法是什么?
- 写入超过 1GB 的.txt文件时出现奇怪的行为
- 视觉 如何循环访问C++中遵循类似格式的多个.txt文件?
- txt 文件中浮点数的最大和最小值
- 从.txt文件中读取浮点型数字并在公式中使用它们
- C++将文本从.txt文件解析为变量
- 在树结构.txt文件中搜索节点
- 为什么我无法打开/读取从 Python 调用的 C 扩展名中的 txt 文件?
- 在 txt 文件中显示前两个数字的程序
- 如何从具有两列的.txt文件创建并行数组?
- 如何使用c ++读取带有非英文字母的*.txt文件?(国际化)
- 如何像在 C++ 中处理数组一样对 .txt 文件中的字符进行寻址?
- 如何读取 TXT 文件并仅将 int 存储在 C 中