fortran 90中的自动宽度整数描述符

use*_*273 4 fortran gfortran fortran90 fortran95

我想在 fortran 90 中使用自动整数宽度描述符。我提到了输出格式:gfortran 中的太多空白 这个问题说我可以使用I0F0,0用于“自动”宽度。这是我的示例代码(符合 GNU Fortran 编译器):

PROGRAM MAIN
IMPLICIT NONE

INTEGER :: i
REAL :: j

WRITE (*,*) 'Enter integer'
READ (*,100) i
100 FORMAT (I0)

WRITE (*,*) 'Enter real'
READ (*,110) j
110 FORMAT (F0.0)

WRITE (*,100) 'Integer = ',i
WRITE (*,110) 'Real = ',j

END PROGRAM
Run Code Online (Sandbox Code Playgroud)

存在运行时错误 (unit = 5, file = 'stdin') Fortran runtime error: Positive width required in format

我误解了自动宽度描述符吗?我应该使用什么选项?

fra*_*lus 5

使用I0以指定宽度被允许用于输出的最小场。对于输入,I0是不允许的。

来自 Fortran 2008, 10.7.2.1 (6)(我的重点):

在输出时,通过 I、B、O、Z、F 和 G 编辑,字段宽度 w 的指定值可能为零。在这种情况下,处理器选择不会导致字段填充星号的最小正实际字段宽度。w 的指定值在输入时不应为零。

I0for input没有明确的替代方法,但作为 agentp 的注释,列表定向输入 ( read(*,*)) 很简单,很可能适合您的需要。如果不是,那么您可以查看作为字符变量读入的行的更一般解析。您可以找到后者的示例。