当用户输入./a.out -n时,我怎么知道n(正整数)是什么?

时间:2015-02-04 04:53:39

标签: c command-line-arguments

如何将命令行参数设为变量?

也就是说,例如,当用户输入时,我怎么知道n(正整数)./a.out -n?

我知道我可以使用strcmp(argv[1], "-1") strcmp(argv[1], "-100")但是有更简单的方法来实现这个吗?

2 个答案:

答案 0 :(得分:0)

您可以使用

strtol(argv[1])atoi(argv[1])

获取整数,无需将其作为字符串进行比较,并参见。

PS:atoi(NULL)会导致UB。

检查以下代码:

int main(int argc, char **argv)
{
   int n;
   if( argc >2)
   return 1;

   if(argv[1][0] == '-')
     n = atoi(argv[1] +1);
   else
      n= atoi(argv[1]);
   printf("%d\n",n);
   return 0;
}

答案 1 :(得分:0)

假设-n是命令行可选参数,建议使用getoptArgp,并使用case检查它是否为正整数。

有关使用http://www.gnu.org/software/libc/manual/html_node/Parsing-Program-Arguments.html

的更多信息,请参阅以下链接

有关命令行参数的更多信息,以下链接将帮助您http://courses.cms.caltech.edu/cs11/material/c/mike/misc/cmdline_args.html