Fortran的REAl类型用二进制写入文件,结果与C的二进制写不一样?

我需要让fortran与c两种代码异步共享一些数据,于是让fortran用二进制流(stream)写入一些real类型并输出到屏幕上。在用C代码fread的时候(rb),得到的float和fortran中的输出在屏幕上的不一样。

后来我又实验了,用fortran写入某real并打印在屏幕,然后直接调用C,将该real传入。在C中将其也写入另一个二进制文件。最后用HEX格式发现两个文件的数据竟然不一样。

查了一下资料,两个不是都是IEEE存储浮点数据吗?为什么会这样?

阅读 4k
1 个回答

C代码

#include<stdio.h> 
int main(){
    FILE *fid;
    float a;
    a = 10.0;
    fid = fopen( "c.bin", "wb" );
    fwrite(&a,sizeof(float),1,fid);
    fclose(fid);
    return 0;
}

Fortran代码

program main 
    real :: a 
    a = 10.0 
    open(10,file="for.bin",access='stream')
    write(10)a
    close(10)
end program main 

运行结果
运行结果

结果没问题啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进