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

标签 fortran fortran95

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

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

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

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

为了它的值(value),我正在使用 gfortran。

最佳答案

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

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

read(buffer, '(I2)') number

甚至

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

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

关于fortran - 将命令行参数解析为字符串以在 Fortran 中存储整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25040576/

相关文章:

arrays - Fortran:从矩阵中提取列和行并将它们用作乘法的一维数组

dll - Compaq Visual Fortran 6.6、动态链接库 (DLL) 和模块

c++ - Fortran调用C++指针函数

fortran - 在 FORTRAN 子例程中传递不同的变量集

伪参数的 Fortran 类声明

compiler-construction - 用gfortran编译的程序,如何用ifort重新编译?

error-handling - 纯Fortran过程中的I/O

fortran - 在 Fortran 中解析随机 "String + Integers"

file-io - Fortran 95 : open statement, 状态变量 : unknown vs. 替换

arrays - 对于单精度数组,如何使 Fortran SUM 命令结果超过 2^24