[英]fscanf returns wrong numbers
我正在尝试读取一个看起来像这样的文本文件
8
6 1 2.2
1 2 1.0
4 3
1 3
4 5 1.2
2 4 0.0
5 2
6 6
3 4
这是我的代码
int nodes;
FILE* file = fopen(argv[1], "r");
fscanf(file, "%d", &nodes);
printf("n = %d\n", nodes);
while (1) {
int node = 0, link = 0;
float weight = 0.0;
if (fscanf(file, "%d %d %f \n", &node, &link, &weight) < 1) {
break;
} else {
printf("%d %d %.1f \n", node, link, weight);
}
}
这是输出
n = 8
6 1 2.2
1 2 1.0
4 3 1.0
3 4 5.0
1 0 0.0
如果以其他方式设置输入格式,则会发现该错误很容易
8
6 1 2.2
1 2 1.0
4 3 1
3 4 5
1.2 2 4
0.0 5 2
6 6 3
4
当fscanf
尝试通过转换"%d"
读取1.2
,它会将1
分配给相应的变量,并将点保留在缓冲区中以备下次读取。
下一次读取再次使用转换"%d"
,该转换不接受点作为有效输入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.