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

时间:2016-06-07 15:10:57

标签: 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中的scanf模拟)。如何明确地做到这一点,你能帮忙吗?

2 个答案:

答案 0 :(得分:4)

1)您的代码(即get_command_argument)绝不是Fortran 77,而是Fortran 2003。

2)只需使用command_argument_count()找出你得到的论点数。

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

答案 1 :(得分:4)

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

这样的东西
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