私はCでコマンドライン引数を多く扱う小さなプログラムを作っているので、getoptを使ってそれらを並べ替えることにしました。Cでgetoptを非オプション引数で使用する
しかし、2つのオプションのない引数(ソースファイルと宛先ファイル)を必須にしたいので、フラグやその他の引数がなくても、プログラムを呼び出すときにそれらを引数として持つ必要があります。ここで
は、私はフラグで引数を処理するために持っているものの簡易版です。
while ((c = getopt(argc, argv, "i:d:btw:h:s:")) != -1) {
switch (c) {
case 'i': {
i = (int)atol(optarg);
}
case 'd': {
d = (int)atol(optarg);
}
case 'b':
buf = 1;
break;
case 't':
time = 1;
break;
case 'w':
w = (int)atol(optarg);
break;
case 'h':
h = (int)atol(optarg);
break;
case 's':
s = (int)atol(optarg);
break;
default:
break;
}
}
非オプションの引数はまた、処理されるように、私はこれを編集するにはどうすればよいですか?
また、オプションの後にまたはの前に非オプションがあるようにしたいのですが、どのように処理されるのですか?
OKですが、必須の引数がオプションのものよりも前に来ると、私のループは終了するので、必須のものだけが処理され、オプションのものは処理されません。どのように私はこれを修正するのですか? –
オプションは引数の前に来ることが一般的です。 'man'ページで指定するだけです。 –
うん、私は知っているけど、たとえばsshコマンドでは、必須のusername @ server引数の後に*または*の前に-pフラグを付けることができます。私はちょうどそれを行う方法を知りたいです –