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
"${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结构体数组的索引。
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结构体数组的索引。
相关文章推荐
- linux下c/c++实例之十socket服务器实例
- URAL 1277 Cops and Thieves
- Linux下安装MySQL5.7
- Tomcat端口占用相关的问题
- OEM status|start|stop
- CentOS 6.5系统中iptables防火墙开放端口80 3306 22端口
- Tomcat正常启动,可以访问其主页,却不能访问webapp中的项目的jsp文件
- 【编译打包】twemproxy-0.4.1-7.el7.centos.src.rpm
- Bash中的特殊字符大全
- linux 命令
- linux 解压缩命令
- 无线模块数据加密,反码校验,发送字符串"ABCDEFGHIJKLMNOP" LED频闪
- Linux基本命令(一)
- hadoop 之 将若干小文件打包成顺序文件
- tomcat中给server.xml加入<Context>元素
- Linux的设备管理,主设备号和次设备号
- linux常用命令ls
- shell join命令详解(转)
- centos7.0 没有netstat 和 ifconfig命令问题
- hadoop 2.7.1 配置后使用异常