Умная печать целых чисел в fortran90

Я ' m изучаю Fortran90 после краткого знакомства с Fortran77 несколько лет назад. При печати целых чисел в Фортране вы должны указать, сколько пробелов вы хотите зарезервировать для печати целого числа. Рассмотрим эту программу ...

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

... которая генерирует следующий вывод.

'123'
'  123'
'**'
'         123'

Как мне выделить правильный объем места для печати целых чисел, если я не знаю, сколько цифр в целых числах?

Обновить : если ваш компилятор совместим с F95, вы можете использовать дескриптор редактирования I0 (т.е. поставить '(A, I0, A)' в качестве второго аргумента запись в моем примере выше. Спасибо, @janneb!

6
задан jme52 22 June 2018 в 17:36
поделиться