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.怎么了?
你不检查是否fscanf读过一个浮点数.使用它返回它读取的项目数的事实.
另外,请不要阅读FILE*.读到float*.
这段代码应该有效:
float o;
int i,size=0;
while ((i=fscanf(f,"%f",&o))!=EOF) size+=i;
Run Code Online (Sandbox Code Playgroud)