#include #include #include int main (int argc, char **argv) { static const struct option options[] = { {"required", required_argument, NULL, 'r'}, {"optional", optional_argument, NULL, 'o'}, {"none", no_argument, NULL, 'n'} }; int aflag = 0; int bflag = 0; char *cvalue = NULL; int index; int c; while ((c = getopt_long (argc, argv, "abc:", options, NULL)) >= 0) switch (c) { case 'a': aflag = 1; break; case 'b': bflag = 1; break; case 'c': cvalue = optarg; break; case '?': fputs ("Unknown option.\n", stderr); return 1; default: fprintf (stderr, "This should never happen!\n"); return 1; case 'r': printf ("--required %s\n", optarg); break; case 'o': printf ("--optional %s\n", optarg); break; case 'n': puts ("--none"); break; } printf ("aflag = %d, bflag = %d, cvalue = %s\n", aflag, bflag, cvalue); for (index = optind; index < argc; index++) printf ("Non-option argument %s\n", argv[index]); return 0; }