【问题标题】:Dynamic output format setting动态输出格式设置
【发布时间】:2015-02-27 23:29:28
【问题描述】:

我试图动态地制作输出格式,因为要打印的变量数量可以动态变化。我用以下两种方法做了一些实验(见下文),但它们都导致了这样的错误消息:

forrtl: error (63): 输出转换错误,单元1016,文件/panfs/roc/Node_16.txt

第一种方法使用字符串指定输出格式,例如,

real a(4) = [1 2 3 4]
int size = 4
write(string,'(a,i3,a)') '(a,',size,'(f9.4))'
write(*, string) a(:)

第二种方法是我刚从网上学的,只占了一行,但是也没用:

write(*,'(a,<size>f9.4)') a(:)

请帮助我进行此格式设置。谢谢。

编辑:我找到了问题的罪魁祸首。在我的实际项目中,数组“a”的某些元素非常大,以至于 f9.4 不适合显示完整的数组。为了解决这个问题,我将 f9.4 替换为 e11.3 之类的东西。

【问题讨论】:

    标签: string io fortran fortran90


    【解决方案1】:

    Fortran 最近添加了* 作为无限格式中继器。例如,'( *(2X, F3.1) )' 这比动态格式更易于使用。

    【讨论】:

      【解决方案2】:

      您无需提供确切数量的值,表示更多即可。正常的方法是使用足够大的值,比如

              '(a,999f9.4)'
      

      在 Fortran 2008 中,您可以使用 M.S.B. 功能。显示*999(f9.4)

      如果您需要动态字符串用于其他目的,请使用串联运算符//

      【讨论】:

        猜你喜欢
        • 2015-08-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-25
        • 1970-01-01
        • 1970-01-01
        • 2018-03-02
        • 1970-01-01
        • 2018-05-01
        相关资源
        最近更新 更多