使用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 ++,你在输出中显式写入任何空格。
答案 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