【发布时间】:2014-02-23 02:53:14
【问题描述】:
我正在尝试读取包含内容的“chol.txt”文件:
6 3 4 8
3 6 5 1
4 5 10 7
8 1 7 25
使用函数:(其中 *ROW 和 *COL 的值都为 4)
void ReadFile(float*** MATRIX, int* ROW, int* COL)
{
FILE* openF;
openF = fopen("chol.txt", "r");
for (int incROW = 0; incROW < *ROW; incROW++)
{
for (int incCOL = 0; incCOL < *COL; incCOL++)
{
fscanf(openF, "%f", MATRIX[incROW][incCOL]);
printf("MATRIX[%d][%d] has value %f\n", incROW, incCOL, (*MATRIX)[incROW][incCOL]);
}
}
fclose(openF);
}
但它会在崩溃前返回文本:
MATRIX[0][0] has value 6.000000
MATRIX[0][1] has value 0.000000
MATRIX[0][2] has value 4413697645709019316224.000000
MATRIX[0][3] has value 17751098170076127766626959360.000000
我可以手动将浮点数输入矩阵,但现在想从 txt 文件中读取。这是我的 main() 的摘要:
void ReadFile(float*** MATRIX, int* ROW, int* COL);
int main()
{
int SIZE = 4;
float** M = NULL;
MakeNullMATRIX(&M, &SIZE, &SIZE);
ReadFile(&M, &SIZE, &SIZE);
return 0;
}
根据要求 MakeNullMATRIX:
void MakeNullMATRIX(float*** MATRIX, int* ROW, int* COL)
{
*MATRIX = (float **)malloc(*ROW * sizeof(float*));
for (int i = 0; i < *ROW; i++)
{
(*MATRIX)[i] = (float *)malloc(*COL * sizeof(float));
}
}
【问题讨论】:
-
您的问题标题说这是一个 2x2 矩阵,但您的示例数据表明这是一个 4x4 矩阵,这只是稍微令人担忧。你正在传递一个指针到指针到指针到浮点的更是如此。发布您的
main()来调用它。 -
还有
MakeNullMATRIX()。 -
我找到了解决方案'fscanf(openF, "%f", **&(*MATRIX)**[incROW][incCOL]);'
标签: c loops pointers matrix floating-point