-d
オプションを入力し、オプションの後にオプションではない引数を指定するかどうかに関係なく、何かを行うプログラムがあります
。
私のコードは次のとおりです。
#include <stdio.h>
#include <getopt.h>
#include <stdlib.h>
#define OPT_LIST "d::"
int main (int argc, char *argv[])
{
int c;
char string[] = "blah";
while ((c = getopt (argc, argv, OPT_LIST)) != -1)
{
switch (c)
{
case 'd':
printf("%s\n", optarg);
break;
case '?':
fprintf(stderr, "invalid option\n");
exit(EXIT_FAILURE);
}
}
}
したがって、オプションの後にオプションではない引数を入力すると、引数が出力されます。ただし、ユーザーがオプションではない引数を指定しない場合は、char "string" を出力する必要があります (これが、OPT_LIST に二重コロンを入れる理由です)。しかし、これを行う方法がわからないので、どんな助けでも大歓迎です。
プログラムを実行すると、次のようになります。
user:desktop shaun$ ./arg -d hello
hello
user:desktop shaun$ ./arg -d
./arg: option requires an argument -- d
invalid option
C言語を使用してOS XでMacを実行しています。