【问题标题】:Output formatting: too much whitespace in gfortran输出格式:gfortran 中的空格过多
【发布时间】:2014-09-10 17:28:03
【问题描述】:

使用 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, "."

但是每次我有一个打印语句时都必须这样做似乎很麻烦 - 宁愿它更像 C++,在输出中显式写入任何空格。

【问题讨论】:

    标签: formatting fortran output gfortran


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

          fmt = "(*(1x,g0))"
      
          write(*,fmt) whatever1, whatever2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-14
        • 2016-10-08
        • 1970-01-01
        • 2016-07-15
        • 1970-01-01
        • 2017-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多