命令行参数的获取
来源:互联网 发布:php实例 百度网盘 编辑:程序博客网 时间:2024/06/05 19:44
时不时我们会遇到对命令含参数的处理,如果参数个数较多,按照顺序处理有可能会出现错误或者一些可选参数将不能实现,接下来介绍几个处理命令行参数的函数
- getopt
#include <unistd.h>int getopt(int argc, char * const argv[], const char *optstring);extern char *optarg;//带值参数的值extern int optind, opterr, optopt;//optind:下一个要被处理的参数在argv中的下标值//opterr:如果opterr=0,在函数出现错误是,就不会将错误信息打印在标准输出上//optopt:函数返回值
getopt函数的前两个参数argc和argv根main函数的一样,第三个参数optstring就是我们要解析的很多参数;
eg:
char* optstring = "avtc:l";
传入opstring之后,函数会依次检查命令是否指定了-a,-v,-t,-c,-l;如果检查到制定了某个参数,函数就会返回该参数的名称(一直检查到返回-1)
c后面有冒号表示这个参数可以指定值;-c 100
- getopt_long
#include <getopt.h>int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);
前三个参数和getopt一样,该函数包括getopt的功能,并且支持指定长参数
第四个参数: longopts是一个结构体(option)数组
struct option { const char *name; int has_arg; int *flag; int val;};//name :是参数的名称//has_arg :指明是否带参数值,其数值可选: /* no_argument (即 0) 表明这个长参数不带参数(即不带数值,如:--name) required_argument (即 1) 表明这个长参数必须带参数(即必须带数值,如:--name Bob) optional_argument(即2)表明这个长参数后面带的参数是可选的,(即--name和--name Bob均可)*///flag:当这个指针为空的时候,函数直接将val的数值从getopt_long的返回值返回出去,当它非空时,val的值会被赋到flag指向的整型数中,而函数返回值为0//val :用于指定函数找到该选项时的返回值,或者当flag非空时指定flag指向的数据的值。//eg:static const struct option long_options[] ={ { "force", no_argument, &force, 1 }, { "reload", no_argument, &force_reload, 1 }, { "time", required_argument, NULL, 't' }, { "help", no_argument, NULL, '?' }, { "http09", no_argument, NULL, '9' }, { "http10", no_argument, NULL, '1' }, { "http11", no_argument, NULL, '2' }, { "get", no_argument, &method, METHOD_GET }, { "head", no_argument, &method, METHOD_HEAD }, { "options", no_argument, &method, METHOD_OPTIONS }, { "trace", no_argument, &method, METHOD_TRACE }, { "version", no_argument, NULL, 'V' }, { "proxy", required_argument, NULL, 'p' }, { "clients", required_argument, NULL, 'c' }, { NULL, 0, NULL, 0 }};
第五个参数:记录当前longopts的下标
int getopt_long_only(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);
getopt_long_only函数,它与getopt_long函数使用相同的参数表,在功能上基本一致,只是getopt_long只将–name当作长参数,但getopt_long_only会将–name和-name两种选项都当作长参数来匹配。在getopt_long在遇到-name时,会拆解成-n -a -m -e到optstring中进行匹配,而getopt_long_only只在-name不能在longopts中匹配时才将其拆解成-n -a -m -e这样的参数到optstring中进行匹配。
之前博客:命令行参数简介
阅读全文
0 0
- 命令行参数的获取
- 获取进程的命令行参数
- golang获取命令行的参数
- 【Java】命令行参数的获取及判断
- 如何获取其它程序的命令行参数
- 如何获取其它程序的命令行参数
- .NET下获取命令行参数的方法
- 如何获取其它程序的命令行参数
- 获取命令行参数的各种变化
- linux获取命令行参数的函数getopt
- 获取命令行参数的各种变化
- Win32命令行参数的传入和获取
- 如何获取其它程序的命令行参数
- 使用ParamStr获取程序的命令行参数
- Delphi获取进程的命令行参数
- NodeJS获取命令行后面的参数
- 获取其他程序的命令行参数《转》
- 命令行参数的获取和调用
- Noip2012 Day1 T1 Vigenère 密码
- 3 资源管理
- mysql 视图 以及存储过程小总结
- 洗牌算法-Shuffle an Array
- ionic3+angular4动态设置入口页rootpage,根据不同的状态值来确定不同的入口页
- 命令行参数的获取
- CSS 样式书写规范
- 2017 Multi-University Training Contest
- H5面试--弹出的a和b分别是什么
- C++ 关键字
- 理解A*寻路算法具体过程
- Hibernate对象的三种状态及避免误更新
- UMLet创建自定义元素
- 使用bat打开Jupyter Notebook