1
ユニット番号として使用しないでください- 1234
.!のようなものを試してください。STDOUT
下位のユニット番号は、 、STDERR
、などの「特別なユニット」用に予約されていますSTDIN
。この投稿も参照してください: Ansys の Linux でのセグメンテーション エラー
ファイルの終わりを超えて読み取ろうとしているかどうか、または読み取り中にエラーが発生したかどうかを確認するためにステートメントにiostat=ierror
入れることができる列の数が間違っているかどうかを確認するには、「ファイルの終わり」に対応し、エラーが発生したことを意味します中。read
ierror<0
ierror>0
read
行列値に指定したものがファイルmatrix.dat
に対応する場合、最初の (整数) 値を読み取っていません3
。
これは説明用であり、動作するはずです:
program a_test
implicit none
real :: a(3,3),b(3)
integer :: dummy, ierror, i, j
open(unit=1234,file='matrix.dat')
read(1234,*) dummy
do i=1,3
read(1234,*,iostat=ierror) b(i),(a(i,j),j=1,3)
if (ierror>0) then
stop 'Error while reading from file. '
elseif (ierror<0) then
stop 'Reached end of file. '
endif
enddo
close(1234)
write(*,*) 'a='
write(*,*) a(1,:)
write(*,*) a(2,:)
write(*,*) a(3,:)
write(*,*) 'b=',b
end