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() を使用することです。