我写了一个fortran代码来读取存储为复杂变量的2D数组并在屏幕上输出的文件中的数据。但在执行期间出现错误消息错误57:尝试读取过去的文件结尾。
PROGRAM IMPORTFILE
IMPLICIT NONE
INTEGER, PARAMETER :: DP = SELECTED_REAL_KIND(15,60)
COMPLEX(DP),DIMENSION(:,:),ALLOCATABLE :: A,B
INTEGER :: I,J,M,N
N = 12; M = 3
ALLOCATE(A(N,N),B(N,M))
OPEN(UNIT = 20, FILE ='C:\Users\Hp\Desktop\A_matrix.dat', &
ACCESS='SEQUENTIAL', STATUS='OLD', FORM='FORMATTED')
DO I = 1,N
READ(20,FMT = '(2F20.10)')(A(I,J),J = 1,N)
END DO
OPEN(UNIT = 30, FILE ='C:\Users\Hp\Desktop\B_vector.dat',&
ACCESS='SEQUENTIAL', STATUS='OLD', FORM='FORMATTED')
DO I = 1, N
READ(30,FMT = '(2F20.10)')(B(I,J),J = 1, M)
END DO
DO J = 1, N
WRITE(*,*) (B(J,I), I = 1,M)
END DO
DO J = 1, N
WRITE(*,*) (A(J,I), I = 1,N)
END DO
CLOSE(20)
CLOSE(30)
END PROGRAM IMPORTFILE
答案 0 :(得分:0)
此格式
'(2F20.10)'
说只读2个值。您需要将重复说明符放在大于或大于数组的位置, 例如:
'(144F20.10)'
太大了 确定.. ,如果需要,请输入10000f20.10。 在f2008中,您可以使用* F20.10
指定无限重复( ..关于时间.. )
如果不能解决问题,您应该发布数据文件的样本。