gpt4 book ai didi

c - 从 C 文件中获取矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 08:50:55 25 4
gpt4 key购买 nike

好吧,我的任务是创建一个程序,从文件中读取一个未知的 nxn 矩阵,然后以某种方式计算它的行​​列式。我几乎完成了所有工作,只是从文件中获取数字后数字似乎乱七八糟。

如果你只看我的代码,可能会更容易,这是在阅读矩阵之前的部分,我所说的值都是困惑的。这不是 i <= dim,因为 dim 从 0 开始计数,所以它应该运行正确的次数。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>


int main(int argc, char* argv[])
{
FILE *input;
int i, j, temp;
int dim=0;
double det;
const char inp_fn[]="matrix.dat";

/*Open File*/
input = fopen(inp_fn, "r");

/*Find the number of lines and hence dimensions*/
while (EOF != (temp = fgetc(input)))
{
if (temp=='\n')
{
++dim;
}
}

/*Reset pointer to beginning of file and float the matrix*/
fseek(input, 0, SEEK_SET);
float matrix[dim][dim];

/*Check file isn't NULL, if good fill the matrix with the values from the file*/
if( (input != (FILE*) NULL) )
{
for(i=0; i<=dim; i++)
{
for(j=0; j<=dim; j++)
{
fscanf(input, "%f", &matrix[i][j]);
}
}
fclose(input);
}
else
{
printf("Could not open file!\n");
}

如果你们能看到任何东西,请告诉我,我对此很陌生,所以我可能遗漏了一些明显的东西,谢谢。

最佳答案

您的循环与数组的维度不匹配。

要么你的文件在最后一行之后没有'\n',然后你有(dim+1)*(dim+1)的矩阵并应将其定义为 float matrix[dim+1][dim+1] , 或者文件在最后一行之后有'\n',然后你应该使用i < dimj < dim在循环中。

关于c - 从 C 文件中获取矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19753363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com