1

例えば、

次のような構造オプションがあります。

struct option options[] = {
    {"input", required_argument, NULL, OPT_INPUT},
    {"flag", no_argument, NULL, OPT_FLAG},

}

ここで、プログラムのユーザーが誤って -input コマンドの後に入力ファイル名を省略した場合、次のようにフラグを渡します。

./program -input -flag

getopt_long_only は "-flag" を入力の引数として扱います。したがって、次の引数ではなく、プログラムの入力ファイルとして使用されます (したがって、-input の後に引数が渡されない場合はエラーが返されます)。どうすればこれを回避できますか?

GUN/LINUX (2.6.34.3) と gcc (GCC) 4.4.2 20091027 (Red Hat 4.4.2-7) を使用しています。

4

1 に答える 1

0

最も簡単な方法は、すべてを読み込んだ後、 -input に渡された引数が -flag と等しくないことを確認することだと思います。たとえば、 input の必要な引数を に格納する場合はchar *tempstrcmp(temp, "-flag")は非ゼロです。ゼロの場合 (つまり、ユーザーが を入力した場合./program -input -flag)、エラー メッセージを出力して終了します。

于 2014-06-03T14:08:28.537 に答える