【问题标题】:Fortran execute_command_line does not return resultFortran execute_command_line 不返回结果
【发布时间】:2017-07-16 23:49:55
【问题描述】:

我需要在fortran中创建一个文件,然后读取文件中的数据。

call execute_command_line('pwd > workdir.dat')

open(unit=10, file='workdir.dat', status='replace', IOSTAT=open_stat)
    if (open_stat /= 0) stop "Reading workdir.dat file Error"
    read(10,"(A)") workdir
close(10)

但是,当我尝试打开 workdir.dat 时,它是空的,给我带来了严重的打开错误。看来系统只是在程序结束时将workdir.dat的内容刷新到文件中。如何确保 workdir.datopen 之前可以使用?

【问题讨论】:

  • 是的,这解决了问题---应该使用状态old
  • 我投票结束这个问题,因为错误已在 cmets 中指出,我们不希望它出现在未回答的列表中。

标签: fortran


【解决方案1】:

open 语句包括子句status=replace,它实际上告诉运行时系统丢弃文件的内容并重新写入它们。准确地说,语言标准在open 语句中声明了status 说明符:

如果指定了 REPLACE 并且文件确实存在,则删除该文件, 新建一个同名文件,状态变为 旧的。

将子句更改为status=old,这是本案例的正确规范。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 2020-04-05
    • 2018-03-19
    • 2011-07-17
    • 2015-09-29
    • 2013-03-12
    • 1970-01-01
    相关资源
    最近更新 更多