gpt4 book ai didi

command-line - Fortran: `READ(*,*)` != 命令行参数。如何使用命令行参数?

转载 作者:行者123 更新时间:2023-12-04 00:39:03 26 4
gpt4 key购买 nike

海湾合作委员会 4.6 版

问题:要找到一种向可执行文件输入参数的方法,请说 a.out , 从命令行 - 更具体地说,输入一个 double 数字数组。

尝试:使用 READ(*,*)命令,在标准中较旧:
程序test.f ——

PROGRAM MAIN  
REAL(8) :: A,B
READ(*,*) A,B
PRINT*, A+B, COMMAND_ARGUMENT_COUNT()
END PROGRAM MAIN

执行——
$ gfortran test.f
$ ./a.out 3.D0 1.D0

这没有用。一番反省,发现
$./a.out
3.d0,1.d0
4.0000000000000000 0

确实有效,但第二行是输入提示,并没有达到在一行中完成的目的。还有 COMMAND_ARGUMENT_COUNT()显示输入到输入提示中的数字并不真正算作“命令行参数”,这与 PERL 不同。

最佳答案

如果您想在命令行上将参数提供给您的程序,请使用(自 Fortran 2003 起)标准内在子例程 GET_COMMAND_ARGUMENT .像这样的事情可能会奏效

PROGRAM MAIN  
REAL(8) :: A,B
integer :: num_args, ix
character(len=12), dimension(:), allocatable :: args

num_args = command_argument_count()
allocate(args(num_args)) ! I've omitted checking the return status of the allocation

do ix = 1, num_args
call get_command_argument(ix,args(ix))
! now parse the argument as you wish
end do

PRINT*, A+B, COMMAND_ARGUMENT_COUNT()
END PROGRAM MAIN

注意:
  • 子程序的第二个参数 get_command_argument是一个字符变量,你必须解析它才能变成真实的(或其他)。另请注意,我在 args 的每个元素中只允许使用 12 个字符。数组,你可能想摆弄一下。
  • 正如你已经知道的 read不用于读取 Fortran 程序中的命令行参数。

  • 由于您想读取实数数组,因此最好使用您已经想到的方法,即在程序启动后从终端读取它们,这取决于您。

    关于command-line - Fortran: `READ(*,*)` != 命令行参数。如何使用命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13843772/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com