| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

C getopt

提供: MyMemoWiki
ナビゲーションに移動 検索に移動

C getopt

getopt を利用することで、option指定方法のguidelineを簡単に実現できる。 独自の値をとるoption、取らないoptionの両方をsupportする。

  1. #include <unistd.h>
  2. int getopt(int argc, char *const argv[], const char *optstring);
  3. extern char *optarg;
  4. extern int optind, opterr, optopt;
  • optstringは、programで指定するoptionと、各optionが独自の値をとるかどうかを指定する。
  • 文字の後に : がついている場合、そのoptionが、引数をとる
  • 戻り値は、配列argvの中で見つかった、次のoption文字。
  • optionが値をとる場合、外部変数 optargに値がセットされる
  1. #include <unistd.h>
  2. #include <stdio.h>
  3. extern char *optarg;extern int optind, opterr, optopt;
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7. int i = 1; char c;
  8. char os[3] = {'\0',':','\0'};
  9. for( c = 'a'; c <= 'z'; c++) {
  10. os[0] = c;
  11. int opt = getopt(argc, argv, (const char*)&os);
  12. if (opt > -1) {
  13. printf("[%d]%c : %s\n", (i++), opt, optarg);
  14. }
  15. }
  16. }
  1. # ./get_opt -a optionA -b optionB -c optionC
  2. [1]: optionA
  3. [2]: optionB
  4. [3]: optionC

この本からの覚書。