使用fortran 90读取C未格式化的二进制文件

时间:2014-08-26 15:16:40

标签: c file-io fortran binaryfiles fortran90

我刚刚收到一个用于C,IEEE-float的二进制无格式文件,我想用Fortran 90打开它。看起来该文件最初是一个矩阵513乘251,但可能是有更多的情况里面的东西,比如矩阵的大小,尺寸等。有可能吗?如何将所有内容都读入变量?

以下是我第一次尝试的代码示例。

program ReadDataIn
  real               :: DataIn
  character(len=90)    :: FileName= Path/and/file_name/of/the/C_binaryfile

  open (99, file = trim(FileName), iostat=ios, form = 'unformatted', ACCESS='stream')
  read(99) DataIn
  close(99)
  print*, DataIn
endprogram ReadDataIn

编译并运行代码后,我在print*, DataIn只得到一个数字。

确定存储了多个号码。

1 个答案:

答案 0 :(得分:1)

如果只写了矩阵,C就会写出513乘251的数字。 Fortran默认情况下通常会写入额外信息,因此请使用access="stream"打开文件。当然还有form="unformatted"。另一个区别是C是行主要和Fortran列主要,因此Fortran读取251 x 513矩阵。如果你需要它是513乘251,转置它。如果编写C程序以编写更多内容,文件中可能会有更多内容......在这种情况下,您需要知道C程序员编写的内容,或者反向工程,例如,使用十六进制编辑器。