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 ...
随机推荐
- POJ 1734 求最小环路径 拓展Floyd
九野的博客,转载请注明出处:http://blog.csdn.net/acmmmm/article/details/11888019 题意: n个点 m条无向边 下面m条有权无向边 问图中最小环的路径 ...
- 九度OJ 题目1371:最小的K个数
题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 输入: 每个测试案例包括2行: 第一行为2个整数n,k(1< ...
- 【奇偶剪枝】【HDU1010】Tempter of the Bone
题意:输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间.S为起点,D为终点.并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷.所以你必须每秒走一步,且到D点时,所用时间为T. ...
- Sublime 学习记录(一) Sublime 的快捷键
Ctrl + Shift + P : 打开命令面板 Ctrl + P : 搜索项目中的文件 Ctrl + W : 关闭当前打开的文件 Ctrl + G : 跳转到第几行 Ctrl + Shift + ...
- Android应用开发基本流程及测试运行
(1)Android App工程项目的创建 File—New—New Project 设置项目.程序包的名称 设置项目名称为MyDiary,程序包名为org.socrates.mydiary.acti ...
- Android自定义UI的实现和应用
在Android项目开发中,不可避免的要遇到自定义的UI,用较好的体验去讨好UED妹子和交互设计师手下留情~几个迭代下来,遇到了不少这样的要求,有简单有复杂.最好的实现方案就是讲业务和UI隔离,封装成 ...
- js 记忆函数
使用js记忆函数来计算菲波那切数列.阶乘等,可以极大减少我们必须要做的工作,加速程序计算. 1.编写记忆函数memoizer var memoizer = function(memo, fundame ...
- Do Palapala (this)
Description 伟大的中国人民有宝箱容量为S(0<=S<=20000),有m个物品(0<m<=30,每个物品有一个体积(正整数).任取若干个装入箱内,使箱子的剩余空间为 ...
- Molecule to atoms
For a given chemical formula represented by a string, count the number of atoms of each element cont ...
- network-manager与interfaces冲突
网络配置的两种方式 Ubuntu下修改网络配置有两种方式:图形界面方式(network-manager)和修改/etc/network/interfaces 但是如果两种方式的网络设置不同,就会产生冲 ...