无法写入Fotran90中的文件

时间:2016-12-30 23:33:33

标签: file printing fortran

我无法理解为什么我的Fortran90程序不再写入文件了。它曾经在几个小时前工作。我还没有修改代码的这一部分,也没有介绍一些不应该写入文件的条件。在下一行,我放了一个打印命令,在终端上写入应该写入文件的相同值,这是有效的。

open(500, file='data.dat')
write(500,fmt='(E14.4,E14.4)') A,B   !this SHOULD be printed on unit 500
write(*, fmt='(E14.4,E14.4)') A,B   ! this is printed on terminal

我试图改变单位,但没有任何改变。我试图用一个新名称打开一个新文件并写入它,也在代码的其他部分,甚至在开始时,就在变量声明之后。这似乎也不起作用。这太令人沮丧了,因为之前一切正常。可能发生了什么?

2 个答案:

答案 0 :(得分:0)

在Linux下使用gfortran 5.3和以下程序(即代码复制粘贴和最小样板)。

program hop
  implicit none

  double precision :: A, B

  A = 1
  B = 2

  open(500, file='data.dat')
  write(500,fmt='(E14.4,E14.4)') A,B   !this SHOULD be printed on unit 500
  write(*, fmt='(E14.4,E14.4)') A,B   ! this is printed on terminal

end program hop

在终端中输出0.1000E+01 0.2000E+01,并在文件data.dat中输出完全相同的内容。

程序中的写入指令是否挂起?没有看到输出可能与i / o缓冲有关。

如果添加行

,行为是否会发生变化
flush(500)

写入指令后?

答案 1 :(得分:0)

我必须在一个循环中写入文件。现在我在循环中打开文件,添加position ='追加'我在周期结束时关闭它。就像

program pro
implicit none
integer (kind=2) :: i, A, B
do i=1,10
A=i
b=i+1
open(500, file='file.dat', position='append')
write(500, *) A, B
close(500)
enddo

这似乎现在有效。