Вопрос

Я изучаю 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, то я полагаю, что это не сработает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top