我在fortran代码中有以下写声明:
write(4,'(7f20.4)'),x(i,1), x(i,2),x(i,3),x(i,4),x(i,5),x(i,6),x(i,7),x(i,8),x(i,9)
我希望将一整套值打印在一行中,但我会在一秒内得到最后两个值。
我已经尝试了advance=no
,问题仍然存在。
答案 0 :(得分:1)
Fortran 2008推出了 unlimited-format-item ,它是 *(格式项)(换句话说,' *'是像重复计数一样)。
您的编译器(您没有说出您正在使用的编辑器)可能支持此功能。
在(621页)Working Document中, 注10.7进一步解释:
" 无限格式项目的效果就好像其附带的列表前面有一个非常大的重复计数。 unlimited-format-item 还原没有隐含的文件定位。这可用于编写通常称为逗号分隔值记录的内容。
例如,
WRITE( 10, ’( "IARRAY =", *( I0, :, ","))’) IARRAY
生成一个带有标题和逗号分隔的整数值列表的记录。"
这是另一个例子 - 一个完整的程序 - 使用你在上面给我们的行
Program test
Implicit None
Integer, Parameter :: i = 1
Real, Parameter :: x(i, 9) = reshape( [1,2,3,4,5,6,7,8,9], [1,9] )
Write (4, '(*(f20.4))') x(i, 1), x(i, 2), x(i, 3), x(i, 4), x(i, 5), &
x(i, 6), x(i, 7), x(i, 8), x(i, 9)
End Program