您的位置:首页 > 运维架构

命令解析函数getopt_long的用法

2011-05-19 20:21 309 查看
#include <stdio.h>
#include <getopt.h>
int do_name, do_gf_name;
char *l_opt_arg;
struct option longopts[] =
{
{ "name", no_argument, NULL, 'n' },
{ "gf_name", no_argument, NULL, 'g' },
{ "love", required_argument, NULL, 'l' },
{ 0, 0, 0, 0},
};
int
main(int argc, char *argv[])
{
int c;
while((c = getopt_long(argc, argv, "l:", longopts, NULL)) != -1)
{
switch (c)
{
case 'n':
printf("My name is LYR./n");
break;
case 'g':
printf("Her name is BX./n");
break;
case 'l':
l_opt_arg = optarg;
printf("Our love is %s!/n", l_opt_arg);
break;
}
}
return 0;
}
此函数支持长短选项。当程序运行时,getopt()函数会设置控制错误处理的几个变量:

char *optarg ──如果选项接受参数的话,那么optarg就是选项参数。
int optind──argv的当前索引,当while循环结束的时候,剩下的操作数在argv[optind]到argv[argc-1]中能找到。
int opterr──当这个变量非零(默认非零)的时候,getopt()函数为"无效选项”和“缺少选项参数”这两种错误情况输出它自己的错误消息。可以在调用getopt()之前设置opterr为0,强制getopt()在发现错误时不输出任何消息。
int optopt──当发现无效选项的进修,getopt()函数或者返回'?'字符,或者返回字符':'字符,并且optopt包含了所发现的无效选项字符。

其中短选项中,带单冒号的表示必须有参数,且参数和选项之间用空格隔开;带双冒号的表示必须有参数,但参数不能和选项用空格隔开,不带冒号的表示选项不能有参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: