首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Fotran90中写入文件

问无法在Fotran90中写入文件
EN

Stack Overflow用户
提问于 2016-12-31 07:33:33
回答 2查看 79关注 0票数 0

我不明白为什么我的Fortran90程序不再写入文件。几个小时前它还能用。我没有修改这部分代码,也没有引入一些它不应该写入文件的条件。在下一行,我放了一个print命令,它在终端上写入应该写入文件的相同值,这是有效的。

代码语言:javascript
复制
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

我试过改变单位,但什么也改变不了。我尝试用新名称打开一个新文件,并在代码的其他部分写入,甚至在变量声明之后的开始也是如此。这似乎也不起作用。这太令人沮丧了,因为以前一切都很正常。会发生什么呢?

EN

回答 2

Stack Overflow用户

发布于 2016-12-31 22:35:07

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

代码语言:javascript
复制
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缓冲有关。

如果添加这行代码,行为是否会发生变化

代码语言:javascript
复制
flush(500)

在写指令之后?

票数 0
EN

Stack Overflow用户

发布于 2016-12-31 23:03:56

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

代码语言:javascript
复制
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

现在,这似乎起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41404004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档