我是做Fortran编程的新手。我想打开多个.txt文件(CrossSec01到CrossSec10)并将Allocatable数据读取到一个文件中。
我的代码在“读取”中给出了“文件结束错误”。那些新手可以帮助我吗?
这是我的代码:
implicit none
real(8), allocatable :: dat(:,:,:) ! a 3D array, no defined size yet
integer :: i,j,k,m,n
integer :: x,y,z
open(unit=123,file="crossSec01.txt") ! opens 1st file reads & closes file
!read (100,20) ((dat(i,j,k)
read(123,*) y,x
z=30
close(123)
allocate (dat(i,j,k))
do k=1,z
write(str,'("crossSec",i2.2,".txt")')k
open(unit=345,file=str,status="old")
read(345,*)
read(345,*)
read(345,*)
do i = 1,y
read(345,*)(dat(i,j,k),j=1,x) ! This is where I get my fortran runtime error "end of file" error.
end do
close(345)
end do
答案 0 :(得分:0)
allocate (dat(i,j,k))
我认为这是错误发生的地方。您正在使用维度dat
分配数组i,j,k
,但尚未初始化i,j,k
。此时i,j和k的值为零。这将使数组dat
的维度为零,并且您无法在其中写入任何内容。我认为你试图做allocate (dat(y,x,z))
。