如何获取文件中的浮点数?
我有一个包含浮点数的文件,这是一个示例:
0.01
0.24
0.08
0.15
0.7
0.22
0.05
0.28
0.4
0.44
0.8
0.55
现在我需要获取所有浮点数的数量(在本例中为 12)。应避免空行。
我这样做了:
FILE *f, *junk;
if (MYTHREAD == 0) {
f = fopen ("dane.dat", "r");
junk = fopen ("/dev/null", "w");
for(size = 0; fscanf(f, "%f\n", junk) != EOF; ++size);
fclose(junk);
fclose(f);
}
它返回给我 128 O_o。怎么了?
I have a file with float numbers, here is an example:
0.01
0.24
0.08
0.15
0.7
0.22
0.05
0.28
0.4
0.44
0.8
0.55
Now I need to get number of all floats (in this case 12). Empty lines should be avoided.
I did this:
FILE *f, *junk;
if (MYTHREAD == 0) {
f = fopen ("dane.dat", "r");
junk = fopen ("/dev/null", "w");
for(size = 0; fscanf(f, "%f\n", junk) != EOF; ++size);
fclose(junk);
fclose(f);
}
and it returns me 128 O_o. What is wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不检查
fscanf
是否确实读取了浮点数。利用它返回所读取的项目数的事实。另外,不要读取
FILE*
。读取float*
。这段代码应该可以工作:
You don't check if
fscanf
did read a float. Use the fact that it return the number of item it read.Also, don't read to
FILE*
. read tofloat*
.This code should work: