Command line 检查程序的参数是否为空?

Command line 检查程序的参数是否为空?,command-line,fortran,Command Line,Fortran,我运行一个从Fortran源代码编译的程序: ./a.out N t 这里N和t定义了两个正整数。以下是此操作的代码: character(len=10) :: arg call get_command_argument(1, arg) read(arg,'(I10)') N call get_command_argument(2, arg) read(arg,'(I10)') t 接下来,我想做以下工作:如果我既不输入N也不输入t(即,如果arg,1为空),那么程序

我运行一个从Fortran源代码编译的程序:

  ./a.out N t
这里N和t定义了两个正整数。以下是此操作的代码:

  character(len=10) :: arg
  call get_command_argument(1, arg)
  read(arg,'(I10)') N
  call get_command_argument(2, arg)
  read(arg,'(I10)') t
接下来,我想做以下工作:如果我既不输入N也不输入t(即,如果arg,1为空),那么程序建议通过程序输入它们(我不知道Fortran中scanf的模拟是什么)。如何明确地做到这一点,您能帮忙吗?

1)您的代码(即
get\u command\u argument
)不是Fortran 77,而是Fortran 2003

2) 只是用来找出你有多少论点

if (command_argument_count()==0) then
  do whatever you need to do

如果我理解正确的话,你正在寻找

character(len=10) :: arg
call get_command_argument(1, arg)
if (trim(arg) == '') then
  write(*,*) 'Please enter N:'
  read(*,*) N
else
  read(arg,'(I10)') N
end if

call get_command_argument(2, arg)
if (trim(arg) == '') then
  write(*,*) 'Please enter t:'
  read(*,*) t
else
  read(arg,'(I10)') t
end if

但是fortran 77呢?我不相信在f77的情况下不可能检查这个参数是否为空。@JohnTaylor您的代码是Fortran 2003,所以要求Fortran 77是没有意义的。在Fortran 77中,您必须使用各种非标准扩展(如
getarg
iargc
),但没有必要将它们与
get_命令_参数()
结合使用,因此,如果参数数为1,我需要编写if(命令_参数_计数()==1)?对于您的场景,您实际上可以坚持使用get_command_参数并检查返回值,如果返回值为空字符串,请使用默认值填充该值,否则使用提供的参数。