main()
文字列のトークン化とトークンの NULL 終了char*
配列への格納を使用して、通常の関数の動作のような関数をエミュレートしようとしています。
以外はすべて問題ありませんgetopt()
。argv[0]
最初の引数がプログラム名であると想定しているため、再配置されません。しかし、私の機能でargv[0]
は、プログラム名ではありません。getopt()
組み替えもできるようにしたいargv[0]
(任意)。それ、どうやったら出来るの?
getopt(3)
グローバル変数optind
(オプション インデックス) を使用して進行状況を追跡しargv
、1 に初期化しoptind = 0
ます。オプションを読み取る前に設定を試してください。
使ってみて
c = getopt(argc + 1, argv - 1, "xyz")
編集:以下で指摘されているように、これはハックですが、それが機能しないマシンを見てみたいと思います。
@Tom Tannerが提案したハックは特定のシステムで機能しましたが、動作させるはずのターゲット用にコンパイルしませんでした。私が見つけた別の回避策は、argv[] 配列の最初の引数をダミー文字列に置き換えて、getopt() を使用することです。