输出格式:gfortran中有太多空格

时间:2014-07-19 19:38:57

标签: formatting fortran output gfortran

使用gfortran 4.6。这段代码:

PROGRAM f1
IMPLICIT NONE

INTEGER :: i=1, j=3

WRITE(*,*) "integer i is ", i, ", and j is ", j, "."
END PROGRAM f1

产生这个控制台输出,它有太多的空格:

 integer i is            1 , and j is            3 .

我是否可以设置一些设置,以便在第一个标记之前没有空格("整数"),因此标记之间的空格只是一个空格?我知道一个修复是

WRITE(*,'(A,I1,A,I1,A)') "integer i is ", i, ", and j is ", j, "."

但是每次我有一个print语句时,这似乎非常麻烦 - 宁愿它更像C ++,你在输出中显式写入任何空格。

2 个答案:

答案 0 :(得分:3)

列表导向的IO,即write (*, *)是为了方便起见。没有设置可以更改其行为。不同的编译器会产生不同的输出。相反,您可以使用格式化IO来识别。在这种情况下,您可以使用I0作为格式,这将生成所需的位数,而I1将只输出一位数的整数。如果这些是将输出的最大值,那就没关系。

WRITE(*,  '( "integer i is ", I0, ", and j is ", I0, "." )' )  i, j

答案 1 :(得分:0)

您可以尝试更通用的格式并重复使用

    fmt = "(*(1x,g0))"

    write(*,fmt) whatever1, whatever2