如何从C中的二进制文件中读取浮点数?

Pol*_*878 6 c c++ file-io

一切我通过谷歌发现是垃圾...请注意,我想要的答案 Ç,但是如果你用C++解决方案补充你的答案,以及那么你获得积分!

我只是想能够从二进制文件中读取一些浮点数到一个数组中

编辑:是的我知道Endian-ness ...而且我不在乎它是如何存储的.

sth*_*sth 18

如何从文件中读取浮点数完全取决于值的保存方式.一种常见的方式可能是:

void writefloat(float v, FILE *f) {
  fwrite((void*)(&v), sizeof(v), 1, f);
}

float readfloat(FILE *f) {
  float v;
  fread((void*)(&v), sizeof(v), 1, f);
  return v;
}
Run Code Online (Sandbox Code Playgroud)

  • @ Polaris878:调用该函数固定次数? (4认同)
  • 请注意,如果您跨平台移动文件,则字节顺序在此处很重要. (2认同)

Mic*_*ker 5

float f;
if(read(fd,&f,sizeof(f))==sizeof(f))
    printf("%f\n",f);
else
    printf("oops\n");
Run Code Online (Sandbox Code Playgroud)

前提是它被编写为兼容的二进制表示.

read用于文件描述符,fread用于FILE*s和istream::read用于c++iostream.选择你喜欢的东西:

read(fd,&f,sizeof(f))==sizeof(f)

fread(&f,sizeof(f),1,fp)==1

fin.read((char*)&f,sizeof(f)).gcount()==sizeof(f)
Run Code Online (Sandbox Code Playgroud)