0

-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 つの引数に対して複数の値を取得するにはどうすればよいですか?

4

1 に答える 1

1

オプションの 2 つのパラメーターを受け入れる最も簡単な方法は、次のような空白以外の文字でそれらを結合することです':'

myprogram -a min:max other-options

この方法でgetoptは、それを単一のパラメーターと見なします。あなたがそれを扱うとき、あなたはそれを自分で2つに分ける必要があります. 両方の半分が数値の場合、これは機能するはずです。

if (sscanf(optarg, "%d:%d", &min, &max) != 2)
  /* report an error */
于 2013-08-30T14:28:02.450 に答える