-1

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

   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

我已经在该网站上搜索了一个小时,但我就是不知道为什么没有读取任何值,甚至从 row/cols 行之后的第一行也没有。谢谢你的帮助!

4

4 回答 4

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

您不能同时读取并存储 into的cur返回值。使用单独的 ( ) 变量来存储返回值(并检查是否会失败)。fscanfcurintfscanf

于 2013-06-01T10:26:24.597 回答
0
 cur = fscanf(infile, "%lf", &cur);

这是您覆盖读取的值的问题

正确的将是

 int read = fscanf(infile, "%lf", &cur);
于 2013-06-01T10:26:53.273 回答
0

fscanf成功返回 1,因此:

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

确实使cur == 1。相反,只需尝试:

fscanf(infile, "%lf", &cur);
于 2013-06-01T10:27:27.823 回答
0

问题出在了线上

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

您首先使用 fscanf 将正确的值放入 cur,
然后在 cur 分配 fscanf 返回的值,即
成功填充的参数列表的项目数,在这种情况下为 1

于 2013-06-01T10:31:44.057 回答