2

私は、使用方法getopt_long()と、optlongを使用して複数の文字オプションを「読み取る」方法を読んでいます。

ターミナルから次のエントリを解析する必要があります。

./bomb –n String –cp Integer –i Integer –c Integer –fc String

したがって、getoptlongを使用する前に、短いオプションと長いオプションを定義します。

 if(argc != 11){
    perror("Error en numero de argumentos \n");
    exit(EXIT_FAILURE);
 }

 const char* const short_options = "n:i:c:";
 static struct option long_options[] = {
    {"cp", 1, NULL, 'a'},
    {"fc", 1, NULL, 'b'},
    {0, 0 , 0, 0}
 };

引数(それが目的です)でshort_optionsピックアップします。とも同じです。したがって、同じことが長いオプションにも適用される必要があります(どちらも引数を取得します)。n:ci

    while(opt != -1){

        opt = getopt_long(argc, argv, short_options, long_options, NULL);

        switch (opt){   
           case 'n':
           //print it

           case 'a':
          //print it
         } 
    }

さて、このコードは、解析して、それが属するケースに入り、正しく印刷するときに最適に機能し-c -iます-n。私の問題、それはとのため-cpに働いていません-fc。そして、私は以前に作業したことがないので、これを修正する方法が本当にわかりませんgetopt()

前もって感謝します

4

1 に答える 1

2

引用man getopt_long

この getopt_long() 関数getopt()は、2つのダッシュで始まる長いオプションも受け入れることを除いて、同じように機能します。

getopt_long_only()ですがlike getopt_long()、長いオプションを示すこと-もできます。--

したがって、--cpとを使用するか--fc、に切り替える必要がありgetopt_long_onlyます。

于 2013-02-01T14:25:42.210 に答える