我想将如下文件读入已经分配的一维数组中:
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行后的第一行也没有。谢谢你的帮助!
答案 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,