3

main()文字列のトークン化とトークンの NULL 終了char*配列への格納を使用して、通常の関数の動作のような関数をエミュレートしようとしています。

以外はすべて問題ありませんgetopt()argv[0]最初の引数がプログラム名であると想定しているため、再配置されません。しかし、私の機能でargv[0]は、プログラム名ではありません。getopt()組み替​​えもできるようにしたいargv[0](任意)。それ、どうやったら出来るの?

4

3 に答える 3

3

getopt(3)グローバル変数optind(オプション インデックス) を使用して進行状況を追跡しargv、1 に初期化しoptind = 0ます。オプションを読み取る前に設定を試してください。

于 2013-08-12T10:06:03.967 に答える
0

使ってみて

c = getopt(argc + 1, argv - 1, "xyz")

編集:以下で指摘されているように、これはハックですが、それが機能しないマシンを見てみたいと思います。

于 2013-08-12T10:20:26.650 に答える
0

@Tom Tannerが提案したハックは特定のシステムで機能しましたが、動作させるはずのターゲット用にコンパイルしませんでした。私が見つけた別の回避策は、argv[] 配列の最初の引数をダミー文字列に置き換えて、getopt() を使用することです。

于 2013-08-22T12:48:29.600 に答える