使用write打印时如何删除前导空格?

时间:2014-07-30 18:58:54

标签: fortran fortran95

假设我有以下代码

program fortran
  open(900, FILE='SOMETHING')   
  write(900, *) '21'    
end program fortran

文件格式为

 21

也就是说,号码前面有一个空格。如何摆脱那个空间?

2 个答案:

答案 0 :(得分:7)

您可以将其编写为字符串:

PROGRAM fortran 

  OPEN(900,FILE='SOMETHING')
  WRITE(900,'(a)') '21'

END PROGRAM FORTRAN
> cat SOMETHING 
21

回复评论:

更明确的方法是将数字写入字符串(您也可以使用列表导向的I / O执行此步骤),从字符串trim中删除空格,最后输出左侧-adjusted adjustl

program test
  character(len=23) :: str

  write(str,'(ES23.15 E3)') 1.23d0
  write(*,'(a)') adjustl(trim(str))

  write(str,'(ES14.7 E2)') 0.12e0
  write(*,'(a)') adjustl(trim(str))
end program
> ./a.out 
1.230000000000000E+000 
1.2000000E-01

这个解决方案可能比必要的更复杂,但它是一种非常灵活的方法,可以轻松扩展以用于任意目的和格式。

答案 1 :(得分:0)

在列表导向格式(*中的write(unit,*))中,编译器通常会插入前导空格。第一列曾用于控制line printers但现在已从Fortran中删除。

您可以使用任何想要摆脱前导空格的显式格式。例如,一般g0一个或特定字符串a或整数特定i