如何消除 Fortran 打印输出中不需要的空格?

hba*_*ega 6 format fortran fortran90 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
Run Code Online (Sandbox Code Playgroud)

这给了我输出:

     N =           4
 A =   1.00000000      B =   100.000000
A =    1.00  B   100.00
A =    1.00 B =  100.00
Run Code Online (Sandbox Code Playgroud)

我想去掉=符号后得到的不需要的空格,即我想要的输出应该如下所示(后 1 个空格=):

 N = 4
 A = 1.00000000 B = 100.000000
 A = 1.00 B = 100.00
 A = 1.00 B = 100.00
Run Code Online (Sandbox Code Playgroud)

在 fortran 中可以吗?

fra*_*lus 5

您说输出中有“不需要的”空间,但您确实拥有指定的显式格式所要求的空间。当您没有提供格式时,列表定向输出意味着您对间距没有发言权。

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

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

print '("N = ", I0)', N
print '(2(A4,F0.2,:,1X))' ,'A = ',A,'B = ',B
Run Code Online (Sandbox Code Playgroud)

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

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