我刚刚收到了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程序员编写的内容,或者例如通过使用十六进制编辑器来进行反向工程。