getopt_long()
コマンドライン引数を解析するために使用したい。man ページを読んだ後、オプションの後に 1 つの引数しか解析できないことがgetopt_long()
わかりました。このコマンドラインを次のように解析するgetopt_long()
ために使用する方法はありますか:getopt_long()
./a.out -s 127.0.0.1 2012 -u stackoverflow
結果を与えるには:
ip = 127.0.0.1
port = 2012
username = stackoverflow
これが私が試したことです:
while (1) {
int this_option_optind = optind ? optind : 1;
int option_index = 0;
static struct option long_options[] = {
{"server", required_argument, NULL, 's'},
{"user", required_argument, NULL, 'u'},
{0, 0, 0, 0},
};
c = getopt_long(argc, argv, "s:u:", long_options, &option_index);
if (c == -1)
break;
switch (c) {
case 's':
printf("option %s", long_options[option_index].name);
if (optarg) {
printf(" with arg %s", optarg);
}
printf("\n");
case 'u':
printf("option %s", long_options[option_index].name);
if (optarg) {
printf(" with arg %s", optarg);
}
printf("\n");
case '?':
break;
default:
printf("?? getopt returned character code 0%o ??\n", c);
}
}