/* From: http://www.gnu.org/software/libc/manual/html_node/Getopt.html */ /* Should also look at getopt_long for gnu style long string option specifier*/ #include #include #include int main (int argc, char **argv) { int aflag = 0; int bflag = 0; int dvalue = 0; double fvalue = 0.0; char *cvalue = NULL; int index; int c; opterr = 0; while ((c = getopt (argc, argv, "abc:d:f:")) != -1) switch (c) { case 'a': aflag = 1; break; case 'b': bflag = 1; break; case 'c': cvalue = optarg; break; case 'd': dvalue = atoi(optarg); break; case 'f': fvalue = atof(optarg); break; case '?': if (isprint (optopt)) fprintf (stderr, "Unknown option `-%c'.\n", optopt); else fprintf (stderr, "Unknown option character `\\x%x'.\n", optopt); return 1; default: if (isprint (optopt)) fprintf (stderr, "Unknown option `-%c'.\n", optopt); else fprintf (stderr, "Unknown option character `\\x%x'.\n", optopt); break; /* abort (); */ } printf ("aflag = %d, bflag = %d, cvalue = %s dvalue = %d fvalue=%lf\n", aflag, bflag, cvalue, dvalue, fvalue); for (index = optind; index < argc; index++) printf ("Non-option argument %s\n", argv[index]); return 0; }