在F90中读取C数据文件

时间:2010-06-29 17:38:25

标签: c fortran90

我不是编程方面的专家,但有一些经验。我试图将数据文件从C读入Fortran程序已超过一周。 C程序将矩阵保存在bin格式数据文件中,如下所示:

FILE * amatFile;
amatFile = fopen("A.dat","wb");
for(krowa=0;krowa<N2;krowa++){ 
    fwrite(amat[krowa], sizeof(float), S2, amatFile); 
    }
fclose(amatFile);

我在F90的阅读部分是:

open(unit=1,file='AMAT.dat',form='unformatted')
    DO i = 1,M
            Do j = 1,N
        READ(unit=1) AMAT(i,j)
        A(i,j) = AMAT(i,j)
        End do
    End Do
close(1)

如果你能帮我解决问题,我真的很感激。

2 个答案:

答案 0 :(得分:1)

如果您有选择,请考虑使用netcdf或hdf5。

Fortran io是主要的痛苦。 http://local.wasp.uwa.edu.au/~pbourke/dataformats/fortran/

但请检查您的输入。 您似乎正在向文件写入向量,但您似乎正在从不同的文件中读取矩阵

答案 1 :(得分:1)

基于相当detailed writup of Fortran IO,我认为你误解'未格式化'。 Unformatted并不意味着二进制,它只是意味着分隔文本。你的C程序肯定不会写分隔符。如果您可以更改C代码,最简单的解决方案是使用fprintf而不是fwrite,并安排格式以匹配Fortran IO的期望。如果你不能,那么我建议你写另一个C程序来读取现有的C程序并写一些与fortran兼容的数据。