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