从C中的文件读取矩阵不能按预期工作

时间:2013-06-01 10:21:04

标签: c matrix

我想将如下文件读入已经分配的一维数组中:

   4 4
   1 2 3 4
   5 6 7 8
   9 10 11 12
   13 14 15 16

第一行指定行数/列数,后跟矩阵值。我的代码是:

int rows, cols;
infile = fopen("input1.dat", "r");
fscanf(infile, "%d %d\n", &rows, &cols);
printf("Rows: %d, Cols: %d\n", rows, cols);
int i, j;
double cur = 0;
for (i = 0; i < m; i++) {
    for (j = 0; j < n; j++) {
        cur = fscanf(infile, "%lf", &cur);
        printf("%lf\n", cur);
        matrix[(i*m)+j] = cur;
    }
}  

现在输出是:

Rows: 4, Cols: 4
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000

我一直在网站上搜索了一个小时,但我无法弄清楚为什么没有读取任何值,甚至从行/ cols行后的第一行也没有。谢谢你的帮助!

4 个答案:

答案 0 :(得分:0)

cur = fscanf(infile, "%lf", &cur);

您不能同时阅读cur并将fscanf的返回值存储到cur中。使用单独的(int)变量来存储返回值(并检查fscanf是否会失败)。

答案 1 :(得分:0)

 cur = fscanf(infile, "%lf", &cur);

这是你覆盖读取值

的问题

正确

 int read = fscanf(infile, "%lf", &cur);

答案 2 :(得分:0)

fscanf成功返回1,所以:

cur = fscanf(infile, "%lf", &cur);

确实会cur == 1。而只是尝试:

fscanf(infile, "%lf", &cur);

答案 3 :(得分:0)

问题在于

cur = fscanf(infile, "%lf", &cur); 

你首先使用fscanf,