当前位置:Linux教程 - Linux - 一个使用getopt()函数获取命令行参数的例子

一个使用getopt()函数获取命令行参数的例子


#include

int
main (argc, argv)
int argc;
char **argv;
{
int c;
int digit_optind = 0;

while (1)
{
int this_option_optind = optind ? optind : 1;
int option_index = 0;
static struct option long_options[] =
{
{""add"", 1, 0, 0},
{""append"", 0, 0, 0},
{""delete"", 1, 0, 0},
{""verbose"", 0, 0, 0},
{""create"", 1, 0, ''c''},
{""file"", 1, 0, 0},
{0, 0, 0, 0}
};

c = getopt_long (argc, argv, ""abc:d:012"",
long_options, &option_index);
if (c == -1)
break;

switch (c)
{
case 0:
printf (""option %s"", long_options[option_index].name);
if (optarg)
printf ("" with arg %s"", optarg);
printf ("" "");
break;

case ''0'':
case ''1'':
case ''2'':
if (digit_optind != 0 && digit_optind != this_option_optind)
printf (""digits occur in two different argv-elements. "");
digit_optind = this_option_optind;
printf (""option %c "", c);
break;

case ''a'':
printf (""option a "");
break;

case ''b'':
printf (""option b "");
break;

case ''c'':
printf (""option c with value ``%s'' "", optarg);
break;

case ''d'':
printf (""option d with value ``%s'' "", optarg);
break;

case ''?'':
break;

default:
printf (""?? getopt returned character code 0%o ?? "", c);
}
}

if (optind < argc)
{
printf (""non-option ARGV-elements: "");
while (optind < argc)
printf (""%s "", argv[optind++]);
printf ("" "");
}

exit (0);
}