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

getopt和getopt_long的使用

2015-11-01 22:10 393 查看
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结构体数组的索引。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: