Вывести аргумент по умолчанию при использовании getopt в Stack Overflow

static struct option long_options[] =
{
{"r",   required_argument,  0, 'r'},
{"help",        no_argument,        0, 'h'},
{0, 0, 0, 0}
};int option_index = 0;
char c;
while((c = getopt_long(argc, argv, "r:h", long_options, &option_index)) != -1)
{
switch(c)
{
case 'r':
break;
case 'h':
return EXIT_SUCCESS;
}
}

Как сделать h аргументом по умолчанию, так что если эта программа запускается без каких-либо аргументов, она будет выглядеть так, как будто она была запущена с -h?

1

Решение

Может быть, попробовать что-то вроде этого:

static struct option long_options[] =
{
{"r",    required_argument,  0, 'r'},
{"help", no_argument,        0, 'h'},
{0, 0, 0, 0}
};

int option_index = 0;
char c = getopt_long(argc, argv, "r:h", long_options, &option_index);
if (c == -1)
{
// display help...
return EXIT_SUCCESS;
}

do
{
switch(c)
{
case 'r':
break;

case 'h':
{
// display help...
return EXIT_SUCCESS;
}
}

c = getopt_long(argc, argv, "r:h", long_options, &option_index);
}
while (c != -1);

Или это:

static struct option long_options[] =
{
{"r",    required_argument,  0, 'r'},
{"help", no_argument,        0, 'h'},
{0, 0, 0, 0}
};

int option_index = 0;
char c = getopt_long(argc, argv, "r:h", long_options, &option_index);
if (c == -1)
c = 'h';

do
{
switch(c)
{
case 'r':
break;

case 'h':
{
// display help...
return EXIT_SUCCESS;
}
}

c = getopt_long(argc, argv, "r:h", long_options, &option_index);
}
while (c != -1);
1

Другие решения

Почему бы не создать функцию printUsage и сделать что-то подобное.

if (c == 0) {
printUsage();
exit(-1);
}
0

По вопросам рекламы [email protected]