これは前に尋ねられたことをお詫びします。私は見回しましたが、この特定の状況に関連する投稿を見つけることができませんでした。C:フラグのみにgetopt_longを使用すると、スイッチがありません。プログラムは最初の旗しか見ない
今、私は2つのフラグ--saveと--loadを実装しています。最終的に、彼らはroguealikeのためのダンジョンファイルの保存とロードを処理しますが、今はただ何かをやりたいだけです。ここでは、メインからの私のコードの関連部分です。
static struct option long_options[] = {
{"load", no_argument, &load_flag, 1},
{"save", no_argument, &save_flag, 1},
{0,0,0,0},
};
while((c = getopt_long(argc, argv, "f", long_options, NULL)) != -1) {
break;
}
if(load_flag == 1) {
printf("hey, the load flag works \n");
}
if(save_flag == 1) {
printf("And the save flag works as well! \n");
}
私が理解していることから、whileステートメントの条件は実際にフラグを設定する必要があります。しかし、code i adapted it fromには、必須の要素を持つオプションも含まれていたため、switch文とoptstring引数があります。私は自分の状況に合わせてコードを修正しようとしましたが、翻訳で何かが失われました。私はgetopt_longにoptstringの引数を残す必要がありました。私のコードでは何もしません。
変更されたコードを実行すると、 - save OR --loadが機能しますが、両方を使用すると、最初に入力されたものだけが登録されます。残念なことに、私の仕様では両方を一度に使用できると言われています。
私の質問は次のとおりです。
なぜ最初のフラグだけが割り当てられるのですか。それを修正するにはどうすればよいですか?
getopt_longにoptstring引数 "f"を残しておくと、コンパイラを満足させることができますか?それは間違ったアプローチですか?
これは完全に機能しました。ありがとうございました! –