【问题标题】:Parsing command line arguments as strings to store integer in Fortran将命令行参数解析为字符串以在 Fortran 中存储整数
【发布时间】:2014-07-30 15:16:20
【问题描述】:

我正在学习 Fortran 教程,但是下面的代码似乎不起作用。我正在尝试从命令行读取 2 位数字,但是在“TRIM(缓冲区)”处收到错误 UNIT 规范必须是整数表达式或字符变量。

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

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

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

对于我使用 gfortran 的价值。

【问题讨论】:

    标签: fortran fortran95


    【解决方案1】:

    TRIM(buffer) 确实返回一个字符值。然而,这是一个表达式,而不是一个变量。正如错误消息所暗示的,表达式可以提供单位编号,但在从字符读取的情况下,需要一个变量。

    由于TRIM 将仅提供一个从buffer 删除的尾随空格的值,因此不需要这样做:空格不会影响读取。相反,只是去

    read(buffer, '(I2)') number
    

    甚至

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

    更一般地,可以将更复杂的字符表达式分配给一个变量,然后在读取上下文中使用后一个变量。

    【讨论】:

      猜你喜欢
      • 2016-07-30
      • 2019-09-04
      • 1970-01-01
      • 2021-11-03
      • 2023-03-21
      • 1970-01-01
      • 2016-12-10
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多