impression intelligente d'entiers dans Fortran90
Question
J'apprends Fortran90 après une brève introduction à Fortran77 il y a quelques années. Lorsque des entiers d'impression en Fortran, vous devez spécifier le nombre de places que vous souhaitez réserver pour l'impression du nombre entier. Considérez ce programme ...
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
... qui génère la sortie suivante.
'123'
' 123'
'**'
' 123'
Comment puis-je allouer la bonne quantité d'espace pour l'impression entière quand je ne sais pas combien de chiffres sont dans l'entier?
Mise à jour :.! Si votre compilateur est conforme à F95, vous pouvez utiliser le descripteur d'édition I0
(c.-à-dire '(A, I0, A)'
pour le second argument de la fonction write
dans mon exemple ci-dessus Merci @janneb
La solution
Utilisez le descripteur d'édition I0. Eh bien, pour être pédant IIRC qui est Fortran 95, donc si vous êtes vraiment strict sur plus de F90, alors je suppose que cela ne fonctionnera pas.