将命令行参数解析为字符串以在Fortran中存储整数
我正在学习Fortran教程,但是下面的代码似乎不起作用。我试图从命令行读取一个2位数的数字,但是我在“TRIM(buffer)”中得到的错误单元规范必须是整数表达式或字符变量将命令行参数解析为字符串以在Fortran中存储整数,fortran,fortran95,Fortran,Fortran95,我正在学习Fortran教程,但是下面的代码似乎不起作用。我试图从命令行读取一个2位数的数字,但是我在“TRIM(buffer)”中得到的错误单元规范必须是整数表达式或字符变量 INTEGER :: number CHARACTER(LEN=20) :: buffer buffer = "" CALL GET_COMMAND_ARGUMENT(1, buffer) READ(TRIM(buffer), FMT="(I2)") number 因此,据我所知,问题在于READ不确定TRIM的输出
INTEGER :: number
CHARACTER(LEN=20) :: buffer
buffer = ""
CALL GET_COMMAND_ARGUMENT(1, buffer)
READ(TRIM(buffer), FMT="(I2)") number
因此,据我所知,问题在于READ不确定TRIM的输出是否会返回字符值。我是否可以声明它是一个角色,或者是否有其他方法来回避这个问题
我使用gfortran是值得的。TRIM(buffer)
确实返回了一个字符值。然而,这是一个表达式,而不是一个变量。正如错误消息所表明的,表达式可以用来给出单位数,但在从字符读取的情况下,需要一个变量
由于TRIM
的作用仅仅是提供一个从buffer
中去掉尾随空格的值,因此不需要这样做:空格不会影响读数。相反,只需去寻找
read(buffer, '(I2)') number
甚至
read(buffer(1:2), '(I2)') number
更一般地说,可以将更复杂的字符表达式指定给变量,并在读取上下文中使用后一个变量