Умная печать целых чисел в Фортран90 - PullRequest
6 голосов
/ 21 января 2011

Я изучаю Fortran90 после краткого введения в Fortran77 несколько лет назад.При печати целых чисел в 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

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

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

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

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

1 Ответ

9 голосов
/ 21 января 2011

Используйте дескриптор редактирования I0. Что ж, чтобы быть педантичным IIRC, это Fortran 95, так что если вы действительно строги в отношении не более чем F90, то я полагаю, это не сработает.

...