getopt()函数
在讨论这个函数之前我们先理解两个概念:选项及其参数
gcc -o program program.c
在上述命令中 -o 就是其选项 program就是参数。
getopt();
头文件:
#include<unistd.h>
函数原型:
int getopt(int argc,char * const argv[ ],const char * optstring);
argc为参数个数,argv是一个指针数组。
外部变量
extern char *optarg; //选项的参数指针,指向下一个要扫描的参数
extern int optind, //索引为下一个要处理的指针的下标
extern int opterr, //当opterr=0时,getopt不向stderr输出错误信息;相反,不为0,就会向sterr打印一条错误信息
extern int optopt; //用于储存错误或不可知的信息,当命令行选项字符不包括在optstring中或者选项缺少必要的参数时,该选项存储在optopt,getopt返回问号(?)。
optstring参数所做的规定
1.单个字符,表示选项,
2.单个字符后接一个冒号(:)表示该选项后必须跟一个参数。参数紧跟在选项后或者以空格隔开。该参数的指针赋给optarg。
3 单个字符后跟两个冒号(::),表示该选项后的参数可有可无。如果有,则参数必须紧跟在选项后不能以空格隔开。该参数的指针赋给optarg。
e.g.
/*getopt.c*/
1 #include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main(int argc,char *argv[])
{
int opt;
while((opt=getopt(argc,argv,"ab:c::"))!=-){
switch(opt){
case 'a':
printf("option: %c\n",opt);
break;
case 'b':
printf("optarg1: %s\n",optarg);
break;
case 'c':
printf("optarg2: %s\n",optarg);
break;
case '?':
printf("unknown option :%c\n",optopt);
break;
}
}
for(;optind<argc;optind++)
printf("argument: %s\n",argv[optind]);
exit();
}
编译 gcc -o getopt getopt.c
第一次运行 ./getopt -a -b "i am ok" -c
结果
option: a
optarg1: i am ok
optarg2: (null)
第二次运行 ./getopt -a -b "i am ok" -c"I AM OK"
结果
option: a
optarg1: i am ok
optarg2: I AM OK
getopt()函数的更多相关文章
- getopt函数的使用——分析命令行参数
getopt(分析命令行参数) getopt(分析命令行参数) 短参数的定义 返回值 范例 getopt_long 相关函数表头文件#include<unistd.h> 函数声明int g ...
- Linux c 下使用getopt()函数
命令行参数解析函数 —— getopt() getopt()函数声明如下: #include <unistd.h> int getopt(int argc, char * const ar ...
- Linux下getopt()函数的简单使用
最近在弄Linux C编程,本科的时候没好好学啊,希望学弟学妹们引以为鉴. 好了,虽然啰嗦了点,但确实是忠告.步入正题: 我们的主角----getopt()函数. 英雄不问出处,getopt()函数的 ...
- C语言-getopt函数
#include<unistd.h> int getopt(int argc,char *const argv[],const char *optstring); extern char ...
- 如何使用getopt()函数解析参数
最近在写程序的过程中,把一部分时间都花费在程序对参数的处理上.今天听了学长说到getopt函数,才发现原来c里面还有一个专门解决参数处理的函数,查询了相关资料,这里简单总结一下. 使用int main ...
- liunx 系统调用 getopt() 函数
命令行参数解析函数 -- getopt() getopt()函数声明如下: #include <unistd.h>int getopt(int argc, char * const arg ...
- Python中getopt()函数的使用
在运行程序时,可能需要根据不同的条件,输入不同的命令行选项来实现不同的功能.目前有短选项和长选项两种格式.短选项格式为"-"加上单个字母选项:长选项为"--"加 ...
- [转载]Linux下getopt()函数的简单使用
转载源地址:https://www.cnblogs.com/qingergege/p/5914218.html 1.getopt()函数的出处就是unistd.h头文件(哈哈),写代码的时候千万不要忘 ...
- Linux getopt()函数 getopt_long()函数---转
http://hi.baidu.com/scoundrelgg/item/d4083f8412eea05d26ebd97f Linux getopt()函数 getopt_long()函数 get_o ...
- linux之getopt 函数(转)
命令行参数解析函数 —— getopt() getopt()函数声明如下: #include <unistd.h> int getopt(int argc, char * const ar ...
随机推荐
- HTML5 Web Workers来加速您的移动Web应用
一直以来,Web 应用程序被局限在一个单线程世界中.这的确限制了开发人员在他们的代码中的作为,因为任何太复杂的东西都存在冻结应用程序 UI 的风险.通过将多线程引入 Web 应用程… 在本文中,您将使 ...
- 怎么在一个list集合里面筛选重复的数据,在重复的数据中取最后添加的那条数据
1.先将集合进行分组(分组字段)2.在判断分组的数量是否大于 03.大于0,则有重复的数据
- C# MySQL数据库的备份 还原 初始化
// 执行创建数据库操作 this.GetExecute(G_Con, "create database if not exists NEWDB"); this.sqlAddres ...
- MVC 传参
介绍一些View中常用的东西 1:传递参数: 1):路由协议中传递参数: 1):eg:比如是这样类似的路由协议,那么我们在传递参数的时候,就要传递 id过去,当然如果,ABCD= UrlParamet ...
- 实现mysql的分组排名问题
如下图所示的表结构,mysql中查出按照相同class的成员按照年龄排序. sql语句实现如下: SELECT id,name,age,rank FROM ( ,) AS rank,@pa:=ff.c ...
- Android NIO(Noblocking I/O非阻塞I/O)小结
参考:http://www.cnblogs.com/cpcpc/archive/2011/06/27/2123009.html 对于Android的网络通讯性能的提高,我们可以使用Java上高性能的N ...
- check单选框多个全选与取消全选
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- LPC基础教程-Lpc程序和编程环境 mudos 加载原理
编程环境 通常我们所见到的Mud大多是LpMud.LpMuds使用Unix的指令和文件结构.如果你对Unix有所了解,那么LpMud中的一些指令和它的文件结构与普通的Unix基本一样.如果你从未使用过 ...
- conda配置python混合开发环境一站式入门【全平台】
下载安装 清华的镜像 [https://mirror.tuna.tsinghua.edu.cn/help/anaconda/] 官方说明 [http://conda.pydata.org/docs/u ...
- css中element element和element>element选择器的区别
就是这样的选择器: 比如html中有这样一段布局: <div> <p>我是一个段落</p> </div> 这时你用div p{background:ye ...