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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top