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

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

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

(0)
上一篇 2022年4月29日 下午2:40
下一篇 2022年4月29日 下午2:40


相关推荐

  • 数组—进制转换(查表法)

    数组—进制转换(查表法)

    2021年8月25日
    64
  • Linux命令之设置附加组和用户登录Shell

    Linux命令之设置附加组和用户登录Shell从今天开始小编决定用 markdown 来编辑博文啦 不断尝试新的东西拥抱未来正是我的标签 话不多说 今天学习的命令主要是有 usermod 设置主组和附加组 usermod 指定用户登录 Shellwhich 查看命令所在位置 1 usermod 设置主组和附件组 usermod 用来设置用户的主组 附加组和登录 Shell 命令格式如下 主组 通常在新建用户时指定 在 etc passwd 的第四

    2026年2月27日
    2
  • file.delete无法删除文件解决

    file.delete无法删除文件解决file delete 无法删除文件的问题排查思路一般遇到这种问题 需要思考 没有删除的文件是什么原因造成的 常见的有 1 第一种是不是你本地打开该文件 导致系统占用该文件 这种先自查 2 代码种有对该文件操作的流未全部关闭 导致文件被 java 进程占用无法上传 3 要删除的文件名称路径是否有错误 导致文件不存在 4 假如是文件夹需要看文件夹下面是否有文件 一般文件夹如果有文件 删除虽然不会报错 但是返回的是 false 也不能删除 上代码 第一版第一次考虑到可能是文件被占用 所以使用

    2026年3月16日
    3
  • vscode插件大全_vscode必装插件

    vscode插件大全_vscode必装插件Beautify#格式化htmljscss代码vscode-icons#文件图标PartialDiff#对比两段代码或文件Br…

    2026年4月16日
    5
  • 谷歌浏览器驱动镜像

    谷歌浏览器驱动镜像一、背景在使用selenium时,经常会提示谷歌版本包和当前的selenium不匹配例如下报错:selenium.common.exceptions.SessionNotCreatedException:Message:sessionnotcreated:ThisversionofChromeDriveronlysupportsChromeversion90二、谷歌浏览器驱动镜像下载ChromeDriverMirror…

    2022年6月12日
    158
  • JS通过window location href下载文件「建议收藏」

    JS通过window location href下载文件「建议收藏」最近在写文件下载,发现前端实现下载功能是依赖于浏览器特性,而非JS特性。前端实现文件下载主要分为以下情况1、在页面直接点击某个元素,然后另存为,弹出下载提示框2、直接输入网址,确定,弹出下载提示框3、点击页面的块触发下载时间,弹出下载提示框4、点击下载按钮,实现文件下载html代码 <div> <spanng-click=”downloadFile(url…

    2022年7月12日
    513

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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