2014-12-13 60 views
0

我有一个FORTRAN代码的以下写语句:数据被打印在第二行,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已经存在,问题依然存在。

+5

您的格式字符串指定7个项目打印行,但提供9.我想你的第一次努力解决你的问题应该是编辑格式字符串。 – 2014-12-13 13:26:51

+0

我可以确认问题的确是将元素数设置为7而不是9.更改为9将在单行中打印所有9个元素。 – Jauch 2014-12-13 14:46:07

回答

1

的Fortran 2008年推出的无限格式项,这是 *(格式项)(换句话说,“*”就像是一个重复计数)。

你的编译器(你没有说你正在使用哪个)可能支持这个。

在(621页)Working Document, 注10.7进一步解释道:

“的无限格式项的效果就好像是它的封闭名单是由一个非常大的重复计数之前。这里是无限格式项逆转暗示没有文件的定位。这可以用来写什么通常被称为一个逗号分隔值记录。

例如,

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 
+1

或者只是'x(i,1:9)' – 2014-12-24 10:43:55