普段は、コマンドラインのオプション解析は山田君の作ったoption.hを使ってるんだけど、ちょっと目についたので使ってみた。
argc,argvは通常のmain引数をそのまま渡せばよい。#include <stdlib.h> int getopt(int argc, char * const *argv, const char *optstring);
#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;
}
optoptは今のargvの値。"?"が返ったときなんかこれで、うまくいかなかったオプションがわかる。