【发布时间】:2010-05-10 00:20:19
【问题描述】:
我昨天有这个代码工作,但似乎我编辑了它并丢失了工作版本。我不能再让它工作了。
我基本上想从 .txt 文件中扫描一个矩阵。但是每次扫描第一行时,都会跳过第二行,而是读取第三行:(
这是我的代码:
for(i=0;i<=test->rowmat1;i++){
for(j=0;j<=test->colmat1;j++){
fscanf(fin,"%f\t",&test->mat[i][j]);
}
fscanf(fin,"%*[^\n]",&test->mat[i][j]);
}
例如,对于一个矩阵:
1.00 2.00 3.00
4.00 5.00 6.00
7.00 8.00 9.00
10.00 11.00 12.00
如果我提取 3 行和 3 列,我会得到:
1.00 2.00 3.00
7.00 8.00 9.00
然后失败,它想跳过第二行但是10 11 12之后什么都没有
为什么它停止工作?我有什么问题?
@Derek:删除第二个 scanf,我得到了提取 3 x 3 矩阵
1.00 2.00 3.00
4.00 5.00 6.00
7.00 8.00 9.00
10.00 11.00 12.00
1.00 2.00 3.00
5.00 6.00 7.00
9.00 10.00 11.00
最后一位被跳过 :S
请帮忙, 提前致谢。
【问题讨论】:
-
如果 test->rowmat1 = 3 和 test->colmat1 = 3,那么这将读取四个值,而不是三个。
-
@Kinopiko,感谢您的回复..您到底是什么意思?它将如何读取 4 个值?在 3 和 3,它将读取 3 个值:S
-
i = 0; i <= 3对于 i = 0、1、2 和 3 为真,因此这将读取四个值。 -
我知道你在那里做了什么,但你能为我解释一下逻辑吗?我现在很困惑,因为我有另一个代码可以输入矩阵,我不需要这样做:S 请给我解释一下。