设为首页 加入收藏

TOP

Linux中getopt函数用法
2014-11-24 07:20:51 来源: 作者: 【 】 浏览:0
Tags:Linux getopt 函数 用法

最近做cache lab 用到了getopt函数, 用man 3 getopt查看了下用法, 做个总结.


描述:getopt函数是用来解析命令行参数的, 以‘-’或‘--’开头的参数为选项元素,除去‘-’或‘--’的选项元素为选项字符。如果getopt函数被重复调用,则它将会依次返回每个选项元素中的选项字符。


使用getopt函数需要包含以下头文件:


#include


#include


有几个全局变量与getopt函数解析参数有关:


optind: int型, 指示下一个要解析的参数位置,初始时为1.


optarg: char *, 必须接参数的选项元素的参数, 如上面的-nxzz, optarg 就指向"xzz"字符串.


opterr: int 型, 设为0将不打印错误信息.


函数原型为: int getopt(int argc, char * const argv[], const char *optstring);


参数说明: 前两个参数与main函数参数相同, argc保存参数个数,argv[]保存参数数组,第三个参数optstring是你定义


的选项字符组成的字符串, 如"abc",表示该命令有三个选项元素 -a, -b, -c, 选项字符后面如果有一个冒号说


明该选项元素一定有一个参数, 且该参数保存在optarg中, 如"n:t", 表示选项元素n后要接参数, 选项元素t后


不接参数,如 -n xzz -t 或 -nxzz t,有两个冒号说明该选项可接可选参数, 但可选参数不保存在optarg中.


返回值: 如果当前处理的参数为选项元素,且该选项字符在optstring字符串中, 即为你定义的选项, 则返回该


选项字符,如果该选项字符不是你定义的, 那么返回字符' ', 并更新全局变量optind, 指向argc数组中的下一


个参数. 如果当前处理的参数不是选项元素, 则optind偏移向下一个参数, 直到找到第一个选项元素为止, 然后


再按之前描述的操作,如果找不到选项元素, 说明解析结束, 则返回-1.


下面看例子:


#include
#include


int main(int argc, char * const argv[])
{
int opt;
while ((opt = getopt(argc, argv, "nb:o::t")) != -1) {
printf("opt = %c, optarg = %s, optind = %d, argv[%d] = %s\n",
opt, optarg, optind, optind, argv[optind]);
}
return 0;
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇在 Android 模拟器中启用摄像头支.. 下一篇C语言陷阱:浮点运算

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·用 C 语言或者限制使 (2025-12-25 08:50:05)
·C++构造shared_ptr为 (2025-12-25 08:50:01)
·既然引用计数在做 GC (2025-12-25 08:49:59)
·Java 编程和 c 语言 (2025-12-25 08:19:48)
·. net内存管理宝典这 (2025-12-25 08:19:46)