Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 公开及;读取多个.txt文件_Fortran_Fortran90 - Fatal编程技术网

Fortran 公开及;读取多个.txt文件

Fortran 公开及;读取多个.txt文件,fortran,fortran90,Fortran,Fortran90,我不熟悉fortran编程。我想打开多个.txt文件(CrossSec01到CrossSec10)并将可分配数组中的数据读取到单个文件中 我的代码在“读取”中给出了“文件结束错误”。有新手能帮我吗 这是我的密码: implicit none real(8), allocatable :: dat(:,:,:) ! a 3D array, no defined size yet integer :: i,j,k,m,n integer :: x

我不熟悉fortran编程。我想打开多个.txt文件(CrossSec01到CrossSec10)并将可分配数组中的数据读取到单个文件中

我的代码在“读取”中给出了“文件结束错误”。有新手能帮我吗

这是我的密码:

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

我认为这就是错误发生的地方。您正在使用维度
i,j,k
分配数组
dat
,但是
i,j,k
尚未初始化。此时i,j和k的值为零。这将使数组
dat
为零维,并且您无法向其中写入任何内容。我想您是在尝试执行
allocate(dat(y,x,z))

I
j
k
分配语句时已知/初始化的吗?您是否从文件中读取了正确数量的元素?首先,我会将
stat
/
iostat
添加到所有I/O语句和
allocate
中,以查看每个操作是否成功。显然,您希望第一个维度是y,第二个x和第三个z,但在allocate语句中有I,j,k。谢谢M.S.B代码工作正常。干杯。这个答案是@MSB对上述问题评论的扩展。这没什么错。但答案中有一个小错误:如果
i,j,k
没有初始化,也没有分配给,则无法保证在执行
allocate
语句时它们将具有值
0
allocate (dat(i,j,k))