一个使用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);
}