1

次のコードを使用して C で読み取ることができるバイナリ ファイルがあります。

  int it,ix; 
  double par1,par2,par3,par4,par5,par6; 

  fp = fopen("my_binary_file", "r"); 
  assert(fp != NULL); 
  fscanf(fp, "%d %lf %lf %lf \n",&it, &par1, &par2, &par3);
  fscanf(fp, "%d %lf %lf %lf \n",&ix, &par4 ,&par5,&par6);

このコードを使用して、Fortran 90 で同じファイルを読み取ろうとしました

  real(kind=8):: par1,par2,par3,par4,par5,par6
  integer :: it,ix

  open(1,file='my_binary_file',form='unformatted')

  read(1) it,par1,par2,par3
  read(1) ix,par4,par5,par6

しかし、ファイルの終わりエラーが発生します。2行まとめて読んでみた

  read(1) it,par1,par2,par3,ix,par4,par5,par6

何かを読みましたが、パラメーターが期待したものではありません。これは、間違ったバイトを読み取っているか、変数の宣言が間違っていることを意味します。あなたが助けることができると思いますか?

4

2 に答える 2

1

あなたの C コードは、通常バイナリと呼ばれるものを読み取るようには見えません。C バイナリの場合は、暗黙的に使用するSTREAMではなく、入力を使用する必要があります。SEQUENTIAL通常の形式のリスト指示入力を試してみてください。

open(10,file='my_binary_file')

read(10,*) it,par1,par2,par3
read(10,*) ix,par4,par5,par6

ファイルにさらにコンテンツがある場合は、それを表示します。

于 2013-04-16T16:33:22.353 に答える