假设我有以下代码
program fortran
open(900, FILE='SOMETHING')
write(900, *) '21'
end program fortran
文件格式将为
21
也就是说,在数字之前有一个空格。如何摆脱这个空间?
发布于 2014-07-30 19:45:51
你可以把它写成一个字符串:
PROGRAM fortran
OPEN(900,FILE='SOMETHING')
WRITE(900,'(a)') '21'
END PROGRAM FORTRAN
> cat SOMETHING
21
要回应评论,请执行以下操作:
更明确的方法是将数字写入字符串(对于此步骤,您也可以使用列表定向I/O ),从字符串trim
中删除空格,最后输出左侧调整的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
这个解决方案可能比必要的更复杂,但它是一种非常灵活的方法,可以很容易地扩展到任意目的和格式。
发布于 2018-05-23 10:51:13
在指向列表的格式(write(unit,*)
中的*
)中,编译器通常插入前导空格。第一列过去用于控制line printers,但现在已从Fortran中删除。
您可以使用任何想要去掉前导空格的显式格式。例如,通用g0
或特定于字符串的a
或特定于整数的i
。
https://stackoverflow.com/questions/25044807
复制