2011-01-21 10 views
5

Estoy aprendiendo Fortran90 después de una breve introducción a Fortran77 hace unos años. Al imprimir números enteros en Fortran, debe especificar cuántos espacios desea reservar para imprimir el número entero. Considere este programa ...Impresión inteligente de números enteros en 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 

... que genera la siguiente salida.

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

Cómo asigno la cantidad correcta de espacio para la impresión de número entero cuando no sé cuántos dígitos son en el número entero?

actualización: Si su compilador es F95-compatible, puede utilizar el descriptor I0 de edición (es decir, poner '(A, I0, A)' para el segundo argumento de la función write en mi ejemplo anterior Gracias @janneb

Respuesta

8

uso.! el descriptor de edición I. Bueno, ser un IIRC pedante que es Fortran 95, así que si eres realmente estricto sobre no más de F90, entonces supongo que esto no funcionará.

+0

Si entiendo la terminología correctamente, la segunda El argumento de cada una de las 4 declaraciones 'write' en mi ejemplo es el argumento' fmt', cada uno de los cuales contiene 3 descriptores de edición. rect? Entonces, sí, la pregunta no es sobre cómo usar los descriptores, sino sobre qué poner después del 'I'. No puedo usar una cadena de caracteres estáticos para el formato porque no sé de antemano cuánto tiempo serán las cadenas. ¿Entiendo su respuesta correctamente, o es un "descriptor de edición IO" diferente de cualquier descriptor de edición de formato? –

+0

Vaya. No entendí tu respuesta al principio, ahora veo que estás hablando de un descriptor de edición específico. ¡Utilicé 'I0' como el descriptor de edición y funcionó! Supongo que los compiladores en la máquina que estoy usando son de hecho compatibles con F95. ¡Gracias! –

Cuestiones relacionadas