File: getopt_ex.c
$ getopt_ex -db -f abc -c -g hij -d file1 file2
1 argc equals 10
2 getopt_ex: illegal option -- b
3 invalid option is b
4 getopt_ex: illegal option -- c
5 invalid option is c
6 dflg equals 2
7 f_ptr points to abc
8 g_ptr points to hij
9 invalid equals 2
10 optind equals 8
11 next parameter = file1
1 #include <stdlib.h>
2 #include <stdio.h>
3
4 main(int argc, char *argv[])
5 {
6 char options[ ] = "f:dg:"; /* valid options */
7 int c, invalid = 0, dflg = 0, fflg = 0, gflg = 0;
8 char *f_ptr, *g_ptr;
9
10 printf("argc equals %d\n", argc);
11 while ((c = getopt(argc, argv, options)) != EOF) {
12 switch (c) {
13 case 'd':
14 dflg++;
15 break;
16 case 'f':
17 fflg++;
18 f_ptr = optarg;
19 break;
20 case 'g':
21 gflg++;
22 g_ptr = optarg;
23 break;
24 case '?':
25 printf("invalid option is %c\n", optopt);
26 invalid++;
27 }
28 }
29 printf("dflg equals %d\n", dflg);
30 if(fflg)
31 printf("f_ptr points to %s\n", f_ptr);
32 if(gflg)
33 printf("g_ptr points to %s\n", g_ptr);
34 printf("invalid equals %d\n", invalid);
35 printf("optind equals %d\n", optind);
36 if(optind < argc)
37 printf("next parameter = %s\n", argv[optind]);
38 }