普段は、コマンドラインのオプション解析は山田君の作ったoption.hを使ってるんだけど、ちょっと目についたので使ってみた。
argc,argvは通常のmain引数をそのまま渡せばよい。#include <stdlib.h> int getopt(int argc, char * const *argv, const char *optstring);
optoptは今のargvの値。"?"が返ったときなんかこれで、うまくいかなかったオプションがわかる。#include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) { int c; while((c = getopt(argc, argv, "ab:cd:")) != EOF){ switch(c){ case 'a': case 'c': printf("%c(%d) ", optopt, optind); break; case 'b': case 'd': printf("%c(%d):%s ", optopt, optind, optarg); break; case '?': printf("?:%c(%d) ", optopt, optind); break; } } printf("\n"); for(; optind < argc; optind++){ printf("%s(%d) ", argv[optind], optind); } printf("\n"); return 0; }