动态输出格式设置

时间:2015-01-01 05:30:21

标签: string io fortran fortran90

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

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(:)

请帮我这个格式设置。感谢。

编辑:我找到了问题的罪魁祸首。在我的真实项目中,数组的一些元素&#34; a&#34;是非常巨大的,因此f9.4不适合显示完整的数组。为了解决这个问题,我将f9.4替换为e11.3之类的东西。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

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

如果出于某些其他目的需要动态字符串,请使用连接运算符//