getopt用法说明

getopt用法说明一.函数模型#includeintgetopt(intargc,char*constargv[],constchar*optstring);externchar*optarg;externintoptind,opterr,optopt;#include<

大家好,又见面了,我是你们的朋友全栈君。

一.函数模型

#include <unistd.h>

       int getopt(int argc, char * const argv[],
                  const char *optstring);

       extern char *optarg;
       extern int optind, opterr, optopt;

       #include <getopt.h>

       int getopt_long(int argc, char * const argv[],
                  const char *optstring,
                  const struct option *longopts, int *longindex);

       int getopt_long_only(int argc, char * const argv[],
                  const char *optstring,
                  const struct option *longopts, int *longindex);

optarg——指向当前选项参数(如果有)的指针。 optind——再次调用 getopt() 时的下一个 argv 指针的索引。 optopt——最后一个未知选项。

二.说明

1.简要用法

函数说明 getopt()用来分析命令行参数。参数argc和argv分别代表参数个数和内容,跟main()函数的命令行参数是一样的。参数 optstring为选项字符串, 告知 getopt()可以处理哪个选项以及哪个选项需要参数,如果选项字符串里的字母后接着冒号“:”,则表示还有相关的参数,全域变量optarg 即会指向此额外参数。如果在处理期间遇到了不符合optstring指定的其他选项getopt()将显示一个错误消息,并将全域变量optarg设为“?”字符,如果不希望getopt()打印出错信息,则只要将全域变量opterr设为0即可。

2.补充说明

optstring中的指定的内容的意义(例如getopt(argc, argv, “ab:c:de::”);)
1.单个字符,表示选项,(如上例中的abcde各为一个选项)
2.单个字符后接一个冒号:表示该选项后必须跟一个参数。参数紧跟在选项后或者以空格隔开。该参数的指针赋给optarg。(如上例中的b:c:)
3 单个字符后跟两个冒号,表示该选项后可以跟一个参数,也可以不跟。如果跟一个参数,参数必须紧跟在选项后不能以空格隔开。该参数的指针赋给optarg。(如上例中的e::,如果没有跟参数,则optarg = NULL)

3.小例子

#include <stdio.h>
  #include<unistd.h>
  int main(int argc, char *argv[])
  {
  int ch;
  opterr = 0;
  while((ch = getopt(argc,argv,"a:bcde"))!= -1)
  {
  switch(ch)
  {
  case : printf("xxxtest");
  case 'a': printf("option a:’%s’\n",optarg); break;
  case 'b': printf("option b :b\n"); break;
  default: printf("other option :%c\n",ch);
  }
  printf("optopt +%c\n",optopt);
  }
  return 0;
  }
执行 $./getopt –b
option b:b
执行 $./getopt –c
other option:c
执行 $./getopt –a
other option :?
执行 $./getopt –a12345
option a:’12345

参考http://baike.baidu.com/item/getopt以及man-pages

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/131115.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 什么叫侧面指纹识别_又见侧面指纹,四大指纹识别技术,你会如何选择?「建议收藏」

    什么叫侧面指纹识别_又见侧面指纹,四大指纹识别技术,你会如何选择?「建议收藏」原标题:又见侧面指纹,四大指纹识别技术,你会如何选择?1.正面实体指纹系统关于最早搭载正面指纹识别技术的手机,估计大家都会说是苹果公司在2013年9月发布的iPhone5s。其实最早的应该是摩托罗拉公司。只是苹果公司的影响比较大,在iPhone5s之后,将这项技术推向了颠峰,引领了潮流。之后各大手机厂商也纷纷加入了这个行列,越来越多的指纹识别手机面世。得益于苹果手机传统的HOME键,刚好可…

  • Java多态实现原理

    Java多态实现原理##前言多态是Java语言重要的特性之一,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定。Java对于方法调用动态绑定的实现主要依赖于方法表,但通过引用调用(invokevitual)和接口引用调用(invokeinterface)的实现则有所不同。Java多态实现原理的大致过程:首先是Java编译器将Java源代码编译成class文件。在编译过程中,会根据静态类型将调用的符号引用写到class文件中。在执行时,JVM根据class文件找到调用方法的符号引用,然后在静态类型的方

  • npm 更改为淘宝镜像的方法[通俗易懂]

    npm更改为淘宝镜像的方法1、命令行临时使用指定镜像(淘宝)npm–registryhttps://registry.npm.taobao.orginstallexpress2、命令行永久更改使用指定镜像(淘宝)npmconfigsetregistryhttps://registry.npm.taobao.org以后npminstallexp…

  • java文档注释报错,java文档注释主要使用方法「建议收藏」

    java文档注释报错,java文档注释主要使用方法「建议收藏」一、java包含哪些注释1.//用于单行注释。2./*…*/用于多行注释,从/*开始,到*/结束,不能嵌套。3./**…*/则是为支持jdk工具javadoc.exe而特有的注释语句。这个也就是我们所知的文档注释在命名控制台:使用命令行在目标文件所在目录输入javadoc+文件名.java。二、文档注释的关键名词/**标记用于…

    2022年10月31日
  • Python字典提取_python字典键对应的值

    Python字典提取_python字典键对应的值python字典操作提取key,valuedictionaryName[key]=value1.为字典增加一项2.访问字典中的值3、删除字典中的一项4、遍历字典5、字典遍历的key\value6、字典的标准操作符7、判断一个键是否在字典中8、python中其他的一些字典方法9、将两个字典合并a={‘a’:1,…

    2022年10月20日
  • visual studio code好用的插件(ae的插件)

    最后一款插件真的很实用》》》

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号