我注意到大多数GNU核心应用程序的基本“样式”,其中参数为:
--longoption
--longoption=value
要么 --longoption value
-abcdefg
(多种选择)-iuwww-data
(选项i
,u = www-data
)他们遵循上述样式。我想避免编写参数解析器,如果有一个使用上述样式的库可以做到这一点。你知道吗?
getopt_long将完成这项工作,这是来自http://www.gnu.org/s/libc/manual/html_node/Getopt-
Long-Option-Example.html
的示例
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
/* Flag set by ‘--verbose’. */
static int verbose_flag;
int
main (argc, argv)
int argc;
char **argv;
{
int c;
while (1)
{
static struct option long_options[] =
{
/* These options set a flag. */
{"verbose", no_argument, &verbose_flag, 1},
{"brief", no_argument, &verbose_flag, 0},
/* These options don't set a flag.
We distinguish them by their indices. */
{"add", no_argument, 0, 'a'},
{"append", no_argument, 0, 'b'},
{"delete", required_argument, 0, 'd'},
{"create", required_argument, 0, 'c'},
{"file", required_argument, 0, 'f'},
{0, 0, 0, 0}
};
/* getopt_long stores the option index here. */
int option_index = 0;
c = getopt_long (argc, argv, "abc:d:f:",
long_options, &option_index);
/* Detect the end of the options. */
if (c == -1)
break;
switch (c)
{
case 0:
/* If this option set a flag, do nothing else now. */
if (long_options[option_index].flag != 0)
break;
printf ("option %s", long_options[option_index].name);
if (optarg)
printf (" with arg %s", optarg);
printf ("\n");
break;
case 'a':
puts ("option -a\n");
break;
case 'b':
puts ("option -b\n");
break;
case 'c':
printf ("option -c with value `%s'\n", optarg);
break;
case 'd':
printf ("option -d with value `%s'\n", optarg);
break;
case 'f':
printf ("option -f with value `%s'\n", optarg);
break;
case '?':
/* getopt_long already printed an error message. */
break;
default:
abort ();
}
}
/* Instead of reporting ‘--verbose’
and ‘--brief’ as they are encountered,
we report the final status resulting from them. */
if (verbose_flag)
puts ("verbose flag is set");
/* Print any remaining command line arguments (not options). */
if (optind < argc)
{
printf ("non-option ARGV-elements: ");
while (optind < argc)
printf ("%s ", argv[optind++]);
putchar ('\n');
}
exit (0);
}
本文向大家介绍PHP中通过getopt解析GNU C风格命令行选项,包括了PHP中通过getopt解析GNU C风格命令行选项的使用技巧和注意事项,需要的朋友参考一下 在 PHP 中,当我们在获取命令行参数时,可以通过遍历$argv来获取,其实呢是有规范可循的,也就是 GNU C-style parser for command line options 。 比如使用命令wget下载文件时,使用下
假设我需要解析一个JSON(见下文)。 首先,我解析“status”字段,以获得的实例(见下文) 我可以用解析JSON以获得而不首先获得吗?
TJS2在行文风格上和C一类的语言类似。和通过换行结束一个语句的BASIC等语言不同,格式基本上为“自由风格”。 但是,不能像JavaScript一样以换行符结束一个语句。 自由风格 换行符、空格和制表符(Tab)等,一般称为“空白字符”,只要不改变句子意思,可以在任何地方插入空白字符,而且,为正确表达语句,必须适当地插入。 例: (1) functionfunc(a,b){a++;retu
这个问题可能已经从所有其他类似的问题中得到了含蓄的回答,但我似乎无法让它起作用。 如果我试图从主源集中的Kotlin文件引用相同的文件,它会抱怨看不到它(“未解析的引用”)。 如果我将相同的文件移动到主源集,它就可以工作了(所以它不是文件本身)。 如果我将Java文件转换为Kotlin,它可以工作(这是我目前的解决方案),但我想知道为什么它不能工作,因为转换并不总是那么容易,它应该可以不进行转换。
camelCase 很糟 你曾维护过别人的代码吗?你维护过像这样的代码吗? my $variableThatContainsData = someSubroutineThatMucksWithData( $someAwfulVariable ); 混合大小写单词在 Perl 世界被称为 camelCase,通常它的令人不悦之处是使 阅读代码更难。 甚至具有糟糕名称的代码使用下划线也能变得
本文向大家介绍详解Spring框架之基于Restful风格实现的SpringMVC,包括了详解Spring框架之基于Restful风格实现的SpringMVC的使用技巧和注意事项,需要的朋友参考一下 如果说现在你要做一个系统,假设说有一个模块属于公告管理,那么我们可能安排路径的时候会这样安排NewsAction路径: 增加新闻:/pages/back/admin/news/add.action;