-1

2 つの列があり、列の下に値がリストされている .dat ファイルがあります。ただし、エントリ間にランダムな間隔があります。両方の列は同じ長さです (データ内のランダムな空白行のみ)。

これらを読み取って表示できるようにする必要があります。

ありがとう!提案について/ジョーを助ける

単純に OPEN だけを使用してみましたが、I/O エラーが発生します。

PROGRAM TEST1


OPEN( 2, FILE='grades.dat', ACCESS='DIRECT', FORM='FORMATTED')

READ( 2) X, Y 


END PROGRAM TEST1
4

1 に答える 1

0

このコードは、ファイルを 1 行ずつ文字列に読み取ります。文字列が空白でない場合、空白ではなく 2 つの数値を含む行に対応し、次の配列要素にそれらを読み取ります。配列が十分な大きさであると宣言されていると想定されます。これはあなたの質問に答えていますか?より良い設計では、ファイルを読み取って数値の数を決定し、ファイルを巻き戻し、配列を正しいサイズに割り当ててから、ファイルを配列に読み取ります。

編集:実際には、Fortran は空白行を自動的にスキップするため、ソリューションはより簡単になります。

program read_file

use, intrinsic :: iso_fortran_env

implicit none

integer :: i, j, ReadCode
real, dimension (100) :: x, y

open (unit=2, file="grades.dat", access="sequential", form="formatted", status="old", action="read" )

i = 1
ReadLoop: do

  read (2, *, iostat=ReadCode )   x (i), y (i)

   if ( ReadCode /= 0 ) then
      if ( ReadCode == iostat_end ) then
         exit ReadLoop
      else
         write ( *, '( / "Bad read: ", I0 )' )  ReadCode
         stop
      end if
   end if

   i = i + 1

end do ReadLoop

do j=1,i-1
   write (*, *) x(j), y(j)
end do

end program read_file
于 2013-03-15T03:53:58.907 に答える