Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何为C/C+;传递可选的命令行参数+;?_C++_C_Command Line Arguments - Fatal编程技术网

C++ 如何为C/C+;传递可选的命令行参数+;?

C++ 如何为C/C+;传递可选的命令行参数+;?,c++,c,command-line-arguments,C++,C,Command Line Arguments,我正在尝试编写一个程序,在某些限制条件下,使用数字0-9计算不同可能的密码数。它需要一个必需的命令行参数,它将是密码中的位数,同时还有一个可选参数,它将是禁止的数字。没有输入参数将意味着允许所有数字 例如,我的程序是否应称为组合: $ combinations 8 3 #find number of passwords of length 8 with '3' not allowed 我试着查找它,发现可以将参数设置为函数的可选参数 int myfunction( int optiona

我正在尝试编写一个程序,在某些限制条件下,使用数字0-9计算不同可能的密码数。它需要一个必需的命令行参数,它将是密码中的位数,同时还有一个可选参数,它将是禁止的数字。没有输入参数将意味着允许所有数字

例如,我的程序是否应称为组合:

$ combinations 8 3    #find number of passwords of length 8 with '3' not allowed
我试着查找它,发现可以将参数设置为函数的可选参数

int myfunction( int optional = 3);

比如说。但是,如果没有输入任何内容,这似乎会将该值设置为默认值。我需要它允许所有数字,如果它留空。对于命令行参数,我该如何做呢

命令行参数作为参数从命令行传递到程序中,并传递给
main
函数。其签名需要是
intmain(intargc,char**argv)

第二个参数是一个以null结尾的字符串数组,其中包含程序调用中传递的每个参数(包括程序名)。第一个是数组中有多少字符串


您需要检查
argc>2
,然后解析该数字的
argv[2]

您可以使用
argc
获取传递给程序的参数总数。此计数器提供包括文件名在内的参数。因此,在给定的示例中,
argc
将为3。您可以围绕它构建其余的逻辑你不是在写C;只有C++允许默认参数。但是,这与命令行参数解析无关。基本上,您将在
main()
中查看
argc
,并确定
argc==2
表示“刚好长度”,而
argc==3
表示“长度和禁止数字”。任何其他内容都将被拒绝并显示使用情况消息(
fprintf(stderr,“用法:%s长度[禁止]\n”,argv[0]);
或其左右)。您还将检查参数是否有效。为了完整起见,
int-main(int-argc,char*argv[])
也是可以接受的。@DavidBowling,是的,但它在语法上比另一种形式更具吸引力。