Fortran プログラムでファイルをメモリに読み込もうとしています。ファイルにはN
、各行に 2 つの値を持つ行があります。これは私が現在行っていることです(コンパイルして実行しますが、間違った出力が得られます):
program readfromfile
implicit none
integer :: N, i, lines_in_file
real*8, allocatable :: cs(:,:)
N = lines_in_file('datafile.txt') ! a function I wrote, which works correctly
allocate(cs(N,2))
open(15, 'datafile.txt', status='old')
read(15,*) cs
do i=1,N
print *, cs(i,1), cs(i,2)
enddo
end
私が取得したかったのは、変数cs
にロードされたデータで、行が最初のインデックス、列が 2 番目でしたが、上記のコードを実行すると、最初に 2 つの「左列」の値を持つ行が出力され、次に 2 つの "右側の列」の値、次に次の 2 つの「左側の列の値」を含む行など。
状況をより視覚的に説明すると、次のようになります。
In my data file: Desired output: Actual output:
A1 B1 A1 B1 A1 A2
A2 B2 A2 B2 B1 B2
A3 B3 A3 B3 A3 A4
A4 B4 A4 B4 B3 B4
を割り当てるときにインデックスを切り替えようとしましcs
たが、結果は同じです (または、print ステートメントでインデックスを切り替えるかどうかに応じて segfault になります)。また、値を行ごとに読み取ろうとしましたが、データファイルの形式が不規則であるため (列揃えではなくカンマ区切り)、これをまったく機能させることができませんでした。
必要な結果を達成するための最良の方法でデータをメモリに読み込むにはどうすればよいですか?