optarg的多个值

时间:2013-08-29 15:15:44

标签: c argv argc

我希望能够获得-a arg的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 个答案:

答案 0 :(得分:1)

接受选项的两个参数的最简单方法是使用非空白字符':'加入它们:

myprogram -a min:max other-options

这种方式getopt将其视为单个参数。当你处理它时,你需要自己分成两个。如果两半都是数字,那么这应该有效:

if (sscanf(optarg, "%d:%d", &min, &max) != 2)
  /* report an error */