Optionparser

Skelett eines Programms dass mit Optionen gestartet wird:

optionparser.c
// skeleton eines Optionparser / richard@borwinius.de 
//gcc optionparser.c -o optionparser 
#include <stdio.h> 
#include <getopt.h> 
#include <string.h>
#include <stdlib.h>
 
 
void usage(char *prog)
{
 printf("usage of %s with arguments :\n",prog);
 printf("%s -a xxx -b yyyy -c -h\nor\n",prog);
 printf("%s --arg_a xxx --arg_b yyy --arg_c --help\n",prog);
 return ;
}
 
 
int main (int argc, char** argv)
{
int i;
static char* arg_a = NULL;
static char* arg_b = NULL;
static char* arg_c = NULL;
static char* help  = NULL;
 
static struct option long_options[] = {
    {"arg_a",	required_argument,	0,'a'},
    {"arg_b",	required_argument,	0,'b'},
    {"arg_c",	no_argument,		0,'c'},
    {"help",	no_argument,		0,'h'},
    {0,0,0,0}
};
 
while ((i = getopt_long(argc,argv,"a:b:ch",long_options,NULL)) != -1)
 
    {
    switch (i)
	{
	case 'a': 
		arg_a = strdup(optarg);
		printf("argument von a: %s\n",arg_a);break;
	case 'b': 
		arg_b = strdup(optarg);
		printf("argument von b: %s\n",arg_b);break;
	case 'c': 
		printf("c ausgewählt: \n");break;
	case 'h':
		usage(argv[0]);break;
	default:
		usage(argv[0]);break;
		//fprintf(stderr,"falsche option %c\n",i);exit (1);
	}
    }
return 0;
}