4

我不是编程专家,但有一些经验。我试图将数据文件从 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)

如果您能帮助我解决问题,我将不胜感激。

4

2 回答 2

1

基于Fortran IO 的相当详细的书面文件,我认为您误解了“未格式化”。未格式化并不意味着二进制,它只是意味着分隔文本。您的 C 程序肯定没有编写分隔符。如果可以更改 C 代码,最简单的解决方案是使用 fprintf 而不是 fwrite,并安排格式以符合 Fortran IO 的期望。如果不能,那么我建议编写另一个 C 程序来读取现有程序的输出并编写一些与 fortran 兼容的数据。

于 2010-06-29T22:07:01.593 回答
1

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

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

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

于 2010-06-29T17:49:35.627 回答