在fortran90中智能打印整数

Dan*_*age 6 format fortran fortran90 fortran95

几年前,我在简要介绍Fortran77之后,正在学习Fortran90.在Fortran中打印整数时,必须指定要为打印整数保留的空格数.考虑这个程序......

implicit none

integer :: i
i = 123

write(*, '(A, I3, A)')  "'", i, "'"  !3 spaces for output = no padding
write(*, '(A, I5, A)')  "'", i, "'"  !5 is too many, so output is padded
write(*, '(A, I2, A)')  "'", i, "'"  !2 is too few, so output is jibberish
write(*, '(A, I:, A)')  "'", i, "'"  !Default behavior

end program
Run Code Online (Sandbox Code Playgroud)

...生成以下输出.

'123'
'  123'
'**'
'         123'
Run Code Online (Sandbox Code Playgroud)

当我不知道整数中有多少位数时,如何为整数打印分配正确的空间量?

更新:如果您的编译器符合F95,您可以使用I0编辑描述符(即,在上面的示例'(A, I0, A)'中为write函数的第二个参数添加.感谢@janneb!

jan*_*neb 9

使用I0编辑描述符.好吧,要成为Fortran 95的迂腐IIRC,所以如果你真的严格不超过F90,那么我认为这是行不通的.