代码之家  ›  专栏  ›  技术社区  ›  Sam Reina

optarg的多个值

  •  0
  • Sam Reina  · 技术社区  · 11 年前

    我希望能够获得2个参数值,比如:-a min-max

    我有以下代码:

    while((opt = getopt(argc,argv,"a:c:k:rv")) != -1)
    {
        switch (opt)
        {
             case 'a':
                    min = atoi(optarg);
                    fprintf( stderr,"value1: %s\n", optarg);
                    optind--;
                    for( ;optind < argc && *argv[optind] != '-'; optind++)
                    {
                        optind++;
                        fprintf( stderr,"value2: %s\n", optarg);
                        max = atoi(optarg);
                    }
                break;
              //other cases
         }
    }
    

    如何为单个参数获取多个值?

    1 回复  |  直到 11 年前
        1
  •  1
  •   n. m. could be an AI    11 年前

    接受一个选项的两个参数的最简单方法是使用非空白字符将它们连接起来,如 ':' :

    myprogram -a min:max other-options
    

    这边 getopt 把它看作是一个单一的参数。当你处理它时,你需要自己把它一分为二。如果两半都是数字,那么这应该有效:

    if (sscanf(optarg, "%d:%d", &min, &max) != 2)
      /* report an error */
    
    推荐文章
    Sam Reina  ·  optarg的多个值
    11 年前