将命令行参数解析为在Fortran中存储整数的字符串

时间:2014-07-30 15:16:21

标签: fortran fortran95

我正在关注Fortran教程,但下面的代码似乎不起作用。我试图从命令行读取一个2位数字,但是我得到错误UNIT规范“TRIM(缓冲区)”必须是INTEGER表达式或CHARACTER变量。

INTEGER :: number
CHARACTER(LEN=20) :: buffer

buffer = ""
CALL GET_COMMAND_ARGUMENT(1, buffer)
READ(TRIM(buffer), FMT="(I2)") number

所以我理解的问题是,READ不确定TRIM的输出是否会返回CHARACTER值。我可以以某种方式声明它是一个CHARACTER还是有另一种解决这个问题的方法?

值得我使用gfortran。

1 个答案:

答案 0 :(得分:3)

TRIM(buffer)确实返回一个字符值。但是,这是表达式而不是变量。正如错误消息所示,表达式可用于给出单元号,但在从字符读取时,需要变量。

由于TRIM仅用于提供从buffer剥离的尾随空格的值,因此不需要:空格不会影响阅读。相反,只需去

read(buffer, '(I2)') number

甚至

read(buffer(1:2), '(I2)') number

更一般地说,可以为变量赋予更复杂的字符表达式,并在读取上下文中使用后者变量。