You need to enable JavaScript to run this app. 如何将Shell命令行参数传入Fortran程序实现数值平方计算
优惠活动
大模型
产品
解决方案
定价
更多

如何将Shell命令行参数传入Fortran程序实现数值平方计算

适配Shell命令行传参的Fortran代码修改方案

原有代码的问题

  • 变量x全程未初始化,计算时的取值是随机内存野值,结果没有实际意义
  • 没有任何读取Shell命令行传入参数的逻辑,无法支持./exe parameter的调用方式

具体修改点

  • 在变量声明区域,新增命令行参数处理所需的辅助变量,分别用于存储参数计数、字符串格式的原始入参、数值读取的状态标记
  • 在原有fx=x**2的计算逻辑之前,插入命令行参数读取的全流程代码
  • 补充基础的参数合法性校验,避免用户未传参、传入非数字内容时程序直接异常崩溃

修改后的完整可运行代码

PROGRAM square_calc
    REAL*8 :: x, fx
    ! 命令行处理所需的辅助变量
    INTEGER :: argc, ierr
    CHARACTER(len=32) :: arg_str

    ! 获取命令行传入的用户参数总数
    argc = COMMAND_ARGUMENT_COUNT()
    ! 校验是否传入了计算所需的参数
    IF (argc < 1) THEN
        PRINT *, "正确调用格式:./exe 待计算平方的数值"
        STOP
    END IF
    ! 读取用户传入的第一个参数(注:程序自身路径为第0位参数,用户输入的内容从序号1开始计数)
    CALL GET_COMMAND_ARGUMENT(1, arg_str)
    ! 将字符串格式的入参转换为双精度浮点数,赋值给变量x
    READ(arg_str, *, IOSTAT=ierr) x
    ! 校验入参是否为合法数字
    IF (ierr /= 0) THEN
        PRINT *, "传入的参数不是合法数字,无法完成计算"
        STOP
    END IF

    fx = x ** 2
    PRINT *, 'The square of ', x, ' is ', fx
END PROGRAM square_calc

实际使用方式

代码编译生成可执行文件后,直接在Shell中按照约定格式执行即可,例如执行./exe 7,程序会自动读取参数7,计算并输出平方结果49。


内容的提问来源于stack exchange,提问作者user10156341

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.08 12:15:03