zoukankan      html  css  js  c++  java
  • getopt

    getopt(分析命令行参数

       相关函数
       表头文件 #include<unistd.h>
       定义函数 int getopt(int argc,char * const argv[ ],const char * optstring);
       extern char *optarg;
       extern int optind, opterr, optopt;
       函数说明 getopt()用来分析命令行参数。参数argc和argv是由main()传递的参数个数和内容。参数 optstring为选项字符串, 告知 getopt()可以处理哪个选项以及哪个选项需要参数,如果选项字符串里的字母后接着冒号“:”,则表示还有相关的参数,全域变量optarg 即会指向此额外参数。如果在处理期间遇到了不符合optstring指定的其他选项getopt()将显示一个错误消息,并将全域变量optarg设为“?”字符,如果不希望getopt()印出错信息,则只要将全域变量opterr设为0即可。

       getopt() 所设置的全局变量包括:

       optarg——指向当前选项参数(如果有)的指针。 optind——再次调用 getopt() 时的下一个 argv 指针的索引。 optopt——最后一个已知选项。
       补充说明下optstring中的指定的内容的意义(例如getopt(argc, argv, "ab:c:de::");
       1.单个字符,表示选项,(如上例中的abcde各为一个选项)
       2.单个字符后接一个冒号:表示该选项后必须跟一个参数。参数紧跟在选项后或者以空格隔开。该参数的指针赋给optarg。(如上例中的b:c:)
       3 单个字符后跟两个冒号,表示该选项后必须跟一个参数。参数必须紧跟在选项后不能以空格隔开。该参数的指针赋给optarg。(如上例中的e::)
       范例 
    #include<stdio.h>
    #include<unistd.h>
    
    int main(int argc,char **argv)
    {
        int ch;
        opterr = 0;
    
        while((ch = getopt(argc,argv,"a:b::cde"))!= -1)
        {
            switch(ch)
            {
            case 'a': printf("option a:'%s'\n", optarg); break;
            case 'b': printf("option b:b\n", optarg); break;
            default: printf("other option:%c\n", ch); break;
            }
            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’
  • 相关阅读:
    Power BI for Office 365(八)共享查询
    Power BI for Office 365(七) Power BI站点
    Power BI for Office 365(六)Power Map简介
    Power BI for Office 365(五)Power View第二部分
    Power BI for Office 365(四)Power View第一部分
    Power BI for Office 365(三)Power Pivot
    Power BI for Office 365(二)Power Query
    java 继承、重载、重写与多态
    Android 热修复方案Tinker(一) Application改造
    阿里最新热修复Sophix与QQ超级补丁和Tinker的实现与总结
  • 原文地址:https://www.cnblogs.com/xlmeng1988/p/2759909.html
Copyright © 2011-2022 走看看