0

假设我想在 Fortran 文件中追加一行。使用最新版本(4.7)gfortran,我发现这有效:

program test
  integer :: lun=10, i=0

  open(FILE='test.dat', UNIT=lun)

  do
     read(lun, *, END=20) i
     print *, i
  end do
20 backspace(lun)

  write(lun, *), i+1
end program test

但是gfortran 4.4,它会覆盖最后一行。要追加,我发现我需要使用

20 continue

而不是backspace.

那是怎么回事?您将如何在实际程序中处理这个问题?

4

1 回答 1

0
program test
  integer :: lun=10, i=0,io

  open(FILE='test.dat', UNIT=lun, POSITION="append")

  backspace(lun,iostat=io)

  if (io==0) then
    read(lun,*) i
  else
    i = 0
  end if

  write(lun, *) i+1

end program test
于 2013-09-06T08:37:57.257 回答