ackery 发表于 2019-3-17 12:47:41

Fortran读写文件报错

program test

implicit none

integer,parameter::nx=144,ny=73,nz=17,nt=12

real,dimension(nx,ny,nz,nt)::uwnd,vwnd

integer::ii,jj,kk,tt,irec

open(21,file='D:\workspace\work2\uwnd.mon.ltm.dat',form='unformatted',access='direct',recl=nx*ny)

open(22,file='D:\workspace\work2\vwnd.mon.ltm.dat',form='unformatted',access='direct',recl=nx*ny)

open(23,file='D:\workspace\work2\uvwnd.dat',status='replace',form='unformatted',access='direct',recl=nx*ny)

irec=1

do tt=1,nt

    do kk=1,nz

      read(21,rec=irec) ((uwnd(ii,jj,kk,tt),ii=1,nx),jj=1,ny)

      irec=irec+1

    end do

end do

irec=1

do tt=1,nt

    do kk=1,nz

      read(22,rec=irec) ((vwnd(ii,jj,kk,tt),ii=1,nx),jj=1,ny)

      irec=irec+1

      print*,irec

    end do

end do

irec=1

do tt=1,nt

    do kk=1,nz

      write(23,rec=irec) ((uwnd(ii,jj,kk,tt),ii=1,nx),jj=1,ny)

      irec=irec+1

    end do

    do kk=1,nz

      write(23,rec=irec) ((vwnd(ii,jj,kk,tt),ii=1,nx),jj=1,ny)

      irec=irec+1

    end do

end do





close(21)

close(22)

close(23)

end program test

运行后报错:


青衣巷 发表于 2019-3-18 10:09:13

这应该是文件里的数据量不足,使得你读文件的时候,遇到了记录的尾部。
也可能是recl要乘以4,就像这样
recl=nx*ny*4
页: [1]
查看完整版本: Fortran读写文件报错