我刚刚收到一个用于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
只得到一个数字。
确定存储了多个号码。
答案 0 :(得分:1)
如果只写了矩阵,C就会写出513乘251的数字。 Fortran默认情况下通常会写入额外信息,因此请使用access="stream"
打开文件。当然还有form="unformatted"
。另一个区别是C是行主要和Fortran列主要,因此Fortran读取251 x 513矩阵。如果你需要它是513乘251,转置它。如果编写C程序以编写更多内容,文件中可能会有更多内容......在这种情况下,您需要知道C程序员编写的内容,或者反向工程,例如,使用十六进制编辑器。