getoptを複数回呼び出す時のメモ

コマンドラインのオプションを関数に対して使いたいという場面が多々ある.そういう時,argcとargvを設定して,getoptで解析すればよいのだが,少し注意が必要.
getoptはoptindを使って,今引数argvのどこを読むべきなのかを覚えている.2回めに呼び出される時はこれらを初期化してあげないといけない.
2回目のgetoptを呼び出す前に,optind = 1, optreset = 1に初期化すれば大丈夫.
getopt(3) manページ

  int * Init(int argc, char * argv[]){
    optind = 1;
    optreset = 1; // for using getopt at multiple times.
    while ((ch = getopt(argc, argv, "f:xgh")) != -1) {
      switch (ch) {
      case 'f':
        // hoge1
	break;
      case 'x':
        // hoge2
	break;
      case 'g':
        // hoge3
	break;
      default:
	print_usage(argc, argv);
	exit(0);
      }
    }
    argc -= optind;
    argv += optind;
  }