如何将命令行参数设为变量?
也就是说,例如,当用户输入时,我怎么知道n(正整数)./a.out -n?
我知道我可以使用strcmp(argv[1], "-1")
strcmp(argv[1], "-100")
但是有更简单的方法来实现这个吗?
答案 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
是命令行可选参数,建议使用getopt
或Argp
,并使用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