命令行长选项getopt_long

int getopt_long(int argc, 
                char * const argv[],
                const char *optstring,
                const struct option *longopts, 
                int *longindex);

funcion:对长或短命令行参数进行解析 选项需要用短用'-'标记  长用'--'来标记
argc:  传给main函数的参数个数
argv[]:传给main函数的参数
optstring:一个包含合法字符选项的字符串,若只解析长选项此处设置""串但不能设置NULL
   如: "ab:c::"
   (1) -a(--aaa) 选项不带参数
   (2) -b(--bbb)选项带参数 -b(-bbb) arg
   (3) -c(--ccc)选项可以带参数 也可以不带参数, 但选项和参数必须紧挨着 -c(-ccc)[arg]   
longindex:若不为空,则存放longopts数组中匹配的元素下标,此值只有在optstings为""串,的时候才会返回值

struct option{
   const char *name; //长选项的名字
   int         has_arg; //是否有参数 
                        //no_argument表示没有,
                        //required_argument需要参数--bbb arg 或者 --bbb=arg 
                        //optional_argument需要或不需要 使用方式为--ccc=arg
   int        *flag;//如果flag是null(通常情况),则函数会返回与该项option匹配的val值;
                    //如果flag不是NULL,则将val值赋予flag所指向的内存,并且返回值设置为0。                   
   int         val; //和长选项对应的短选项 
};

例子如下:

猜你喜欢

转载自blog.csdn.net/yldfree/article/details/81112542
今日推荐