Умная печать целых чисел в Fortran90
Вопрос
Я изучаю 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)'
Для второго аргумента write
Функция в моем примере выше. Спасибо @janneb!
Решение
Используйте дескриптор редактирования i0. Что ж, чтобы быть педантичным IIRC, это Fortran 95, поэтому, если вы действительно строгие не более чем F90, то я полагаю, что это не сработает.