如何摆脱 Fortran 打印输出中不需要的间距?

How to get rid of unwanted spacing in Fortran's print output?

这看起来可能是一个微不足道的问题,但我无法通过谷歌搜索找到任何答案。我有这个小程序:

Program Test_spacing_print
  Integer:: N
  Real:: A,B

  N=4; A=1.0; B=100.0

  print*,'N =',N

  print*,'A =',A,' B =',B
  print '(2(A3,F8.2,1X))' ,'A =',A,' B =',B
  print 20, A,B
  20 format('A =',F8.2,x,'B =',F8.2)

End Program Test_spacing_print

这给了我输出:

     N =           4
 A =   1.00000000      B =   100.000000
A =    1.00  B   100.00
A =    1.00 B =  100.00

我想去掉 = 符号后不需要的 space,即我想要的输出应该是这样的(1 space after =) :

 N = 4
 A = 1.00000000 B = 100.000000
 A = 1.00 B = 100.00
 A = 1.00 B = 100.00

在 fortran 中可以吗?

你说你在输出中有 "unwanted" space,但你确实有你要求的 space 与你指定的显式格式。当您没有提供格式时,列表定向输出意味着您对间距没有发言权。

要输出 A,您有编辑描述符 F8.2:字段宽度将为 8。小数点后有两位数字,小数点本身为您留下五位数字小数点前的数字(和符号)。因此,对于没有打印可选符号的 A1.,您将有四个空格。

就像 Fortran 95 引入了 I0 edit descriptor 所以它允许 F0.d。 [对于其他描述符,尽管后来添加了 G0.d。] F0.2 将提供小数点后两位数字的最小字段宽度,这就是您想要的。但请注意,您需要在 = 符号后明确添加一个空格:

print '("N = ", I0)', N
print '(2(A4,F0.2,:,1X))' ,'A = ',A,'B = ',B

[我还使用了 : 编辑描述符来避免尾随空白。]

如果你想要一个真正的 Fortran 90 答案,就像你标记的那样,那么它不会那么好,但它仍然可以完成。