zoukankan      html  css  js  c++  java
  • getopt、getopt_long命令参数

    参数 optstring为选项字符串。如果选项字符串里的字母后接着冒号”:”,则表示还有相关的参数

    getopt

    int getopt(int argc, char * const argv[], const char *optstring);
    extern char *optarg; //选项的参数指针
    extern int optind;   //下一次调用getopt的时,从optind存储的位置处重新开始检查选项
    extern int opterr;   //当opterr=0时,getopt不向stderr输出错误信息
    extern int optopt;   //当发现无效选项字符之时,getopt()函数或返回'?'字符,或返回':'字符

    举例说明:
    getopt(argc, argv, “ab:c:de::”);

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

    执行:
    ./a.out -a

    例子:

    char ch;
    while((ch = getopt(argc, argv, "a:b")) != -1)
        printf("getopt %c %s
    ", ch, optarg);
    ./a.out: invalid option -- 'c'                  //输入不存在的选项
    ./a.out: option requires an argument -- 'a'     //a 需要有参数

    getopt_long

    int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);
    struct option
    {
        const char *name; //长参数
        int         has_arg;
        int        *flag;
        int         val;
    };

    name:长参数名(–name)
    has_arg:
    no_argument(0)-长参数不带参数
    required_argument(1)-长参数必须带参数
    optional_argument(2)-长参数后面带的参数是可选
    flag:当这个指针为空的时候,函数直接将val的数值从getopt_long的返回值返回出去;当它非空时,val的值会被赋到flag指向的整型数中,而函数返回值为0
    val:指定函数找到该选项时的返回值,或者当flag非空时指定flag指向的数据的值
    longindex:如果longindex非空,它指向的变量将记录当前找到参数符合longopts里的第几个元素的描述,即是longopts的下标值

    strtoul
    将nptr字符串转换成无符号的长整型数

    unsigned long int strtoul(const char *nptr, char **endptr, int base);

    base:从2至36,或0
    10-10进制
    16-16进制
    0-如果第一个字符是’0’,就判断第二字符如果是’x’则用16进制,否则用8进制;第一个字符不是’0’,则用10进制
    endptr:若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回

  • 相关阅读:
    JS优先队列排序。出队时,先找出优先级最高的元素,再按照先进先出出队。
    使用队列对数组排列,基数排序
    一个用JS数组实现的队列
    使用栈判断给定字符串是否是回文的算法
    使用js栈stack类的实现
    Bootstrap篇:弹出框和提示框效果以及代码展示
    一个漂亮的php验证码类
    jquery单选框radio绑定click事件实现和是否选中的方法
    phpQuery—基于jQuery的PHP实现
    PHP的函数-----生成随机数、日期时间函数
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709968.html
Copyright © 2011-2022 走看看