如何获取文件中的浮点数?

cie*_*bor 1 c floating-point numbers file lines

我有一个带浮点数的文件,这是一个例子:

0.01
0.24
0.08
0.15
0.7
0.22
0.05
0.28
0.4
0.44
0.8
0.55
Run Code Online (Sandbox Code Playgroud)

现在我需要获得所有浮动的数量(在这种情况下为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);
  }
Run Code Online (Sandbox Code Playgroud)

它返回128 O_o.怎么了?

asa*_*elr 5

你不检查是否fscanf读过一个浮点数.使用它返回它读取的项目数的事实.

另外,请不要阅读FILE*.读到float*.

这段代码应该有效:

float o;
int i,size=0;
while ((i=fscanf(f,"%f",&o))!=EOF) size+=i;
Run Code Online (Sandbox Code Playgroud)