我刚刚收到了C,IEEE-float的二进制未格式化文件,我想使用Fortran 90打开它。似乎该文件原来是513 x 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处只有一个数字。

当然,要存储的数字不止一个。

最佳答案

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

08-04 06:08