4

私はプログラミングの専門家ではありませんが、ある程度の経験があります。CからFortranプログラムにデータファイルを読み込もうとしているのは1週間以上です。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

オプションがある場合は、代わりにnetcdfまたはhdf5の使用を検討してください。

fortranioは大きな痛みです。 http://local.wasp.uwa.edu.au/~pbourke/dataformats/fortran/

ただし、入力を確認してください。ベクトルをファイルに書き込んでいるようですが、別のファイルから行列を読み取っているようです

于 2010-06-29T17:49:35.627 に答える
1

Fortran IOのかなり詳細な記述に基づいて、あなたは「フォーマットされていない」と誤解していると思います。フォーマットされていないということは、バイナリを意味するのではなく、区切られたテキストを意味するだけです。あなたのCプログラムは確かに区切り文字を書いていません。Cコードを変更できる場合の最も簡単な解決策は、fwriteの代わりにfprintfを使用し、FortranIOの期待に一致するように形式を調整することです。できない場合は、別のCプログラムを作成して、既存のCプログラムの出力を読み取り、Fortran互換のデータを書き込むことをお勧めします。

于 2010-06-29T22:07:01.593 に答える