当用户键入 ./a.out -n 时,我怎么知道 n(正整数)是多少?
how do I know what n(positive integer) is when user types ./a.out -n?
如何使命令行参数成为变量?
也就是说,例如,当用户键入 ./a.out -n 时,我如何知道 n(正整数)是多少?
我知道我可以使用 strcmp(argv[1], "-1")
strcmp(argv[1], "-100")
但是有没有更简单的方法来实现它?
您可以使用
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;
}
假设-n
是命令行可选参数,总是建议使用getopt
或Argp
,并使用case
检查它是否为正数整数。
有关使用它们的更多信息,请参阅以下 links http://www.gnu.org/software/libc/manual/html_node/Parsing-Program-Arguments.html
有关命令行参数的更多信息,以下link将对您有所帮助http://courses.cms.caltech.edu/cs11/material/c/mike/misc/cmdline_args.html
如何使命令行参数成为变量?
也就是说,例如,当用户键入 ./a.out -n 时,我如何知道 n(正整数)是多少?
我知道我可以使用 strcmp(argv[1], "-1")
strcmp(argv[1], "-100")
但是有没有更简单的方法来实现它?
您可以使用
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;
}
假设-n
是命令行可选参数,总是建议使用getopt
或Argp
,并使用case
检查它是否为正数整数。
有关使用它们的更多信息,请参阅以下 links http://www.gnu.org/software/libc/manual/html_node/Parsing-Program-Arguments.html
有关命令行参数的更多信息,以下link将对您有所帮助http://courses.cms.caltech.edu/cs11/material/c/mike/misc/cmdline_args.html