getopt的函数使用
1、需要头文件#include <unistd.h>,其函数原型为int getopt(int argc, char *const argv[], const char *optstring),调用中会用到外部变量
extern char *optarg表示选项的参数
extern int optind表示参数的下标,注意从1开始
2、optstring表示选项,选项后加:表示选项后必须带参数
3、函数返回值,返回的是选项,直到选项都扫描结束后,返回-1
#include <stdio.h>
#include <unistd.h>
int main(int argc, char **argv)
{
int op;
while ((op = getopt(argc, argv, "a:b:c:")) != -1)
{
switch (op)
{
case 'a':
break;
case 'b':
break;
case 'c':
break;
}
printf("opt=%c, optind=%d, optarg=%s\n", op, optind, optarg);
}
return 0;
}
"${OUTPUT_PATH}" -a a -b b -c c
输出为:
opt=a, optind=3, optarg=a
opt=b, optind=5, optarg=b
opt=c, optind=7, optarg=c
getopt_long的使用
1、需要头文件#include <getopt.h>,函数原型为int getopt_long(int argc, char *const argv[], const char *optstring, const struct option* longopts, int* longindex);
2、struct option结构为
struct option
{
const char *name;
int has_arg;
int *flag;
int val;
};
flag表示长参数的返回方式。如果flag为NULL,返回的是val.否则,getopt_long返回0,option的flag值设置为val。
如果longindex不为空,其值指向option结构体数组的索引。