2011-01-21 59 views
5

幾年前,我在對Fortran77進行簡要介紹後學習了Fortran90。在Fortran中打印整數時,您必須指定要爲打印整數保留多少個空格。考慮這個程序...fortran90中整數的智能打印

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

回答

8

使用! I0編輯描述符嗯,要成爲迂腐的IIRC是Fortran 95,所以如果你真的嚴格不超過F90,那麼我認爲這是行不通的

+0

如果我理解正確的術語,第二在我的例子中,每個4`write`語句的參數是`fmt`參數,每個參數都包含3個編輯描述符。我的術語是cor RECT?所以是的,這個問題並不是關於如何使用描述符,而是關於在'I'之後放置什麼。我不能使用靜態字符串作爲格式,因爲我事先不知道字符串將會有多長。我是否正確理解您的響應,或者是否與「任何格式編輯描述符」不同,均爲「IO編輯描述符」? – 2011-01-21 19:44:53