C语言解析命令行函数:getopt系列
头文件:/usr/include/getopt.h
函数传入较长参数
函数getopt_long_only
和getopt_long
两者用法差不多,都可以用来解析命令行选项
函数出处
#include <getopt.h> //getopt_long()头文件位置
int getopt_long (int ___argc, char *const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind);
int getopt_long_only (int ___argc, char *const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind);
短选项 | 长选项 | 是否需要参数 | |
---|---|---|---|
-n | –username | 是(用户名) | |
-d | –debug | 否 |
参数
argcv,argv :main函数传递的参数
shortopts:短项字符串,如
"hn:jk:p:s:o:m:ti:va"
,短项字符串不需要’-‘标记,短选项需要传递参数的时候后面加上’:’longopts,长选项数组,存放长选项参数
struct longopts{const char *name;//长选项名int has_arg;//是否需要参数int * flag;int val; };
longind:于返回长选项在longopts结构体数组中的索引值,用于调试。一般置为NULL
har_arg 选项有三种情况
define no_argument 0 //不需要参数
define required_argument 1 //必须指定参数
define optional_argument 2 //参数可选
flag和val相互依赖,主要有如下情况
- flag为NULL,val值用于确定该长选项,所以需要为长选项指定唯一的val值。这里也为长选项和短选项建立了桥梁
- flag不为NULL,则将val值存放到flag所指向的存储空间,用于标识该长选项出现过
返回值
- 程序中使用短选项,则返回短选项字符(如‘n’),当需要参数是,则在返回之前将参数存入到optarg中
- 程序中使用长选项,返回值根据flag和val确定。当flag为NULL,则返回val值。所以根据val值做不同的处理,这也说明了val必须唯一。当val值等于短选项值,则可以使用短选项解析函数解析长选项;当flag不为NULL,则将val值存入flag所指向的存储空间,getopt_long返回0
- 出现未定义的长选项或者短选项,getopt_long返回?
- 解析完毕,getopt_long返回-1
全局参数:可以用在头文件作用域处
extern char * optarg
用于获取以上解析函数识别的参数选项后的数值extern int optind
获取以解析函数执行过程中的剩余参数个数。extern int opterr
解析函数遇到无法解析的命令,会将错误标记0返回至该值extern int optopt
为解析函数设置一个未识别的字符选择
C语言解析命令行函数:getopt系列相关推荐
- C语言中使用库函数解析命令行参数
在编写需要命令行参数的C程序的时候,往往我们需要先解析命令行参数,然后根据这些参数来启动我们的程序. C的库函数中提供了两个函数可以用来帮助我们解析命令行参数:getopt.getopt_long. ...
- 从源码的角度看Go语言flag库如何解析命令行参数!
我上周五喝酒喝到晚上3点多,确实有点罩不住啊,整个周末都在休息和睡觉,文章鸽了几天,想不到就有两个人跑了. 不得不感叹一下,自媒体的太残酷了,时效就那么几天,断更就没人爱.你们说好了爱我的,爱呢?哼 ...
- Go语言中命令行参数的实现
为什么80%的码农都做不了架构师?>>> 在写命令行程序时,对命令参数进行解析是常见的需求.各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用.如果命令行参数纯粹自 ...
- python使用argparse解析命令行参数
python使用argparse解析命令行参数 你的程序如何能够解析命令行选项(位于sys.argv中) #示意使用sys.argv进行参数解析: #注意,sys.argv中第0个索引是函数本身,所以 ...
- 如何在Java中解析命令行参数?
在Java中解析命令行参数的好方法是什么? #1楼 我不建议使用Apache Common CLI库,因为它是非线程安全的. 它使用带有静态变量和方法的有状态类来进行内部工作(例如OptionBuil ...
- python 命令-python解析命令行参数的三种方法详解
这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python解析命令行参数主要有三种方法: ...
- python argparse nargs_Python | 使用argparse解析命令行参数
今天是Python专题第27篇文章,我们来聊聊Python当中的命令行参数工具argparse. 命令行参数工具是我们非常常用的工具,比如当我们做实验希望调节参数的时候,如果参数都是通过硬编码写在代码 ...
- c语言用命令行编译运行程序_使用C程序执行系统命令
c语言用命令行编译运行程序 Sometimes, we may need to execute Linux/Windows DOS commands through our C program. (N ...
- c语言学习进阶-C语言带命令行参数的文件数据批量计算
C语言带命令行参数的文件数据批量计算 (1)假设输入文件中的数据为多行整数,把数据文件命名为"InputData.txt",也可以命名为任意的文件名,尝试设计一个c 语言程序, 主 ...
最新文章
- 在阿里当PM都需要做什么?
- 配置MOSS2007beta2的单机开发环境(下)
- System类的常用方法及类字段
- VTK:几何对象之PlanesIntersection
- 谨慎注意WebBrowser控件的DocumentCompleted事件
- uniapp连接php,thinkphp5 对接手机uni-app的unipush推送(个推)
- linux怎么检测文件完整性,Linux如何基于AIDE检测文件系统完整性
- 【转载保存】Mysql主从同步报错集锦
- 是什么决定了我们以何种方式赚钱?
- 在存储过程中构建动态SQL
- java stream 泛型
- numpy ndarray可用的常规函数
- 十七、创建一个 WEB 服务器(一)
- MATLAB【函数求导与积分】
- 哈佛幸福课-完美主义
- Android Instant Run介绍
- 华为ME909之4G模块的开发
- ps入门教程、ps修图基本工具使用方法视频教学
- 透视变换(perspective transformation)
- lyse-building otp applications
热门文章
- Android中实现为TextView添加多个可点击的文本
- 基于libmad库的MP3解码简析
- Windows Phone 7 Tip (5) -- App liftcycle
- usaco Sorting a Three-Valued Sequence 三值的排序
- 2018usnews计算机专业排名,2018年研究生计算机专业前50排名(美USNews版)
- qt 显示加速_新能源 | 吉利星越ePro上市 补贴后17.58万起售 加速更快油耗更低
- barmanager 不显示_广州13.3寸广告液晶显示屏品牌排行榜
- jsp调试java_调试从Tomcat(JSP)运行的Java程序
- 图像形态学(opencv),运行后通过在屏幕上输入对应指令完成相对应的形态学方法。
- FPGA(1)基础入门 -- 按键控制led灯