unistd.hをインクルードしておくこと。
引数を取るプログラムをCで書くとき、mainの宣言は
int main(int argc,char *argv[])
こんな感じに書くのが普通。*argv[]が**argvとなってるコードも見たことがある。
で、getoptの使い方。
while ((ch = getopt(argc, argv, "ab:")) != -1){
switch (ch){
case 'a':
-aオプションの処理
break;
case 'b':
-bオプションの処理
この時、-bの次の引数へのポインタがoptargに収まっている
break;
}
}
初めてgetoptを使おうとしたときに見落としていてちょっと躓いたのが、getoptの引数"ab:"の部分。
これはaは引数を取らない、bは引数を取る、という具合になる。使うオプションを""で括ってずらずらっと書いてやり、引数を取るものの後ろにだけ:(コロン)を付けてやればいい。
引数を取るオプションを見つけたときにgetoptはgetargというcharポインタに引数を与えてくれる。例えばコマンドに「-b hogehoge」というオプションが与えられていたならば、getoptがbを見つけたときに、hogehogeという文字列がoptargに収まる。
0 件のコメント:
コメントを投稿