Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 使用write打印时如何删除前导空格?_Fortran_Fortran95 - Fatal编程技术网

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

Fortran 使用write打印时如何删除前导空格?,fortran,fortran95,Fortran,Fortran95,假设我有以下代码 program fortran open(900, FILE='SOMETHING') write(900, *) '21' end program fortran 文件格式将是 21 也就是说,数字前有一个空格。如何清除该空间?您可以将其写成字符串: PROGRAM fortran OPEN(900,FILE='SOMETHING') WRITE(900,'(a)') '21' END PROGRAM FORTRAN 回应该评论:

假设我有以下代码

program fortran
  open(900, FILE='SOMETHING')   
  write(900, *) '21'    
end program fortran
文件格式将是

 21

也就是说,数字前有一个空格。如何清除该空间?

您可以将其写成字符串:

PROGRAM fortran 

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

END PROGRAM FORTRAN

回应该评论:

更明确的方法是将数字写入字符串(此步骤也可以使用列表定向I/O),从字符串中删除空格,最后输出左对齐的:

这种解决方案可能比必要的更复杂,但它是一种非常灵活的方法,可以很容易地扩展到任意目的和格式

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


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

通常,如果要控制格式,必须使用格式化输出,而不是未格式化/默认格式(例如,
*
)。有关列表定向IO没有所需输出的问题很常见。如前所述,请改用格式化IO。我还想删除实值中的前导空格。请使用零字段宽度,例如
write(*,'(f0.4))3.14
> cat SOMETHING 
21
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