Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.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中的getopt。例如:我有一个参数为-a-b-C和可选的-d的程序。只能使用前三个选项中的一个。通常我会这样做: while ((opt = getopt(argc, argv, OPTSTR)) != EOF) { switch (opt) { case 'd': optional_flag = 1; break; case 'a': if (!mandatory_flag) mandatory_flag = 1; else usage_prompt(argv[0]); break; case 'b': if (!mandatory_flag) mandatory_flag = 1; else usage_prompt(argv[0]); break; case 'c': if (!mandatory_flag) mandatory_flag = 1; else usage_prompt(argv[0]); break;_C_Console_Arguments_Flags_Getopt - Fatal编程技术网

处理多个程序参数,但C中只允许一个 我有一个问题,就是如何合理地考虑在一个可以使用的情况下给出了哪些可用的参数,但也有一个可选的参数,之后可以给出一个强制性的参数。它特别是关于C中的getopt。例如:我有一个参数为-a-b-C和可选的-d的程序。只能使用前三个选项中的一个。通常我会这样做: while ((opt = getopt(argc, argv, OPTSTR)) != EOF) { switch (opt) { case 'd': optional_flag = 1; break; case 'a': if (!mandatory_flag) mandatory_flag = 1; else usage_prompt(argv[0]); break; case 'b': if (!mandatory_flag) mandatory_flag = 1; else usage_prompt(argv[0]); break; case 'c': if (!mandatory_flag) mandatory_flag = 1; else usage_prompt(argv[0]); break;

处理多个程序参数,但C中只允许一个 我有一个问题,就是如何合理地考虑在一个可以使用的情况下给出了哪些可用的参数,但也有一个可选的参数,之后可以给出一个强制性的参数。它特别是关于C中的getopt。例如:我有一个参数为-a-b-C和可选的-d的程序。只能使用前三个选项中的一个。通常我会这样做: while ((opt = getopt(argc, argv, OPTSTR)) != EOF) { switch (opt) { case 'd': optional_flag = 1; break; case 'a': if (!mandatory_flag) mandatory_flag = 1; else usage_prompt(argv[0]); break; case 'b': if (!mandatory_flag) mandatory_flag = 1; else usage_prompt(argv[0]); break; case 'c': if (!mandatory_flag) mandatory_flag = 1; else usage_prompt(argv[0]); break;,c,console,arguments,flags,getopt,C,Console,Arguments,Flags,Getopt,现在的问题是,我只是检查是否给出了可选参数,以及是否没有给出许多强制参数。我可以为每个选项使用一个单独的标志,但对于许多参数来说,这将是令人厌烦的。是否有更好的解决方案来保持逻辑,但也知道给出了哪个参数?我正在考虑另一个开关,在那里我可以运行适当的功能。您可以设置mandatory\u flag=opt,或者您可以定义一个强制\u opt变量,并将强制\u标志设置为1强制\u opt=opt。可选参数和强制参数的顺序是否重要?您还可以使用每次遇到一个强制参数时递增的计数器替换mandatory\

现在的问题是,我只是检查是否给出了可选参数,以及是否没有给出许多强制参数。我可以为每个选项使用一个单独的标志,但对于许多参数来说,这将是令人厌烦的。是否有更好的解决方案来保持逻辑,但也知道给出了哪个参数?我正在考虑另一个开关,在那里我可以运行适当的功能。

您可以设置
mandatory\u flag=opt
,或者您可以定义一个
强制\u opt
变量,并将
强制\u标志设置为1
强制\u opt=opt。可选参数和强制参数的顺序是否重要?您还可以使用每次遇到一个强制参数时递增的计数器替换
mandatory\u flag
,并在末尾检查它是否正好是1。至于顺序,可选参数必须是第一个。其余的都无关紧要。opt标志看起来不错。我想出了一个主意,检查argv数组中是否存在可选参数,然后根据可选的_标志检查argc==2或3。因此,我可以在opt switch中运行函数。
getopt
的好处在于它不关心选项的顺序。Re:“我可以为每个选项使用单独的标志,但对于许多参数来说,这会让人厌烦。”选项就是这样工作的。