You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Fortran中解析带后续参数值的命令行参数

Fortran解析带值的命令行参数

你已经能通过GET_COMMAND_ARGUMENT()处理简单的开关型参数,现在要实现解析带后续值的参数(比如-p后的路径),可以通过标记后续参数的方式实现,修改后的代码如下:

program silly_app    
    character(len=10)       :: arg
    character(len=256)      :: temp_path  ! 存储路径,长度按需调整
    integer                 :: i, x
    logical                 :: get_path = .false.  ! 标记是否需要读取下一个参数作为路径

    x = -1  ! 初始化默认值
    temp_path = ''

    do i = 1, command_argument_count()
        ! 如果处于需要读取路径的状态,直接获取当前参数
        if (get_path) then
            call GET_COMMAND_ARGUMENT(i, temp_path)
            get_path = .false.  ! 重置标记
            cycle  ! 跳过后续判断,进入下一次循环
        endif

        call GET_COMMAND_ARGUMENT(i, arg)

        select case (arg)
            case ('-s', '--SA')
                x = 0
            case ('-f', '--FEWS')
                x = 1
            case ('-p', '--path')
                ! 检查是否有下一个参数
                if (i < command_argument_count()) then
                    get_path = .true.
                else
                    print *, "Error: -p 参数需要跟随路径值"
                    stop
                endif
        end select
    enddo

    ! 测试输出结果
    print *, "x的值为: ", x
    if (temp_path /= '') then
        print *, "读取到的路径为: ", trim(temp_path)
    endif

end program

关键说明:

  • 新增get_path逻辑变量,用来标记是否需要将下一个命令行参数作为路径值读取
  • 当解析到-p或--path时,先检查是否还有后续参数(i < command_argument_count()),避免索引越界导致错误
  • 一旦进入读取路径的状态,直接将当前参数赋值给temp_path,然后重置标记并跳过后续判断
  • 路径变量temp_path的长度可以根据实际需求调整,避免因路径过长被截断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:42:41