Question: Language is C. Use sample program from called getopt.c . Make a copy of getopt.c and call it gactivity.c (from samples to activities directory) Create

Language is C.

  1. Use sample program from called getopt.c .
  2. Make a copy of getopt.c and call it gactivity.c (from samples to activities directory)
  3. Create a Makefile to compile the activity program.
  4. Modify gactivity.c for the following usage:
  5. Usage: gactivity [-ab] -c cname -d number value1 value2 [value ...]
    1. Where the-a and -b flag is optional and does not take a argument
    2. The -c flag is required and needs an argument to go with it. This argument is a string.
    3. The -d flag is required and needs an argument to go with it. This argument is an integer.
    4. In addition, at least two parameters are included but there may be more than two. No more than 3. This can be strings or integers.
    5. The program should print out all the options entered, arguments and parameters.
    6. Program should print error if invalid options are used or missing option arguments or parameters.

input to test:

gactivity -ab -c car -d 4 jose smith

output:

Options: -a -b -c -d

Arguments: car 4

Parameters: jose smith

Other examples:

gactivity -b -d 8 juanes perez

gactivity -b -c marco -d 17 suerez pegasu lipuz

getopt.c ----------------------------------------

/* example of command line parsing via getopt usage: getopt [-dmp] -f fname [-s sname] name [name ...]

Paul Krzyzanowski */

#include #include

int debug = 0;

int main(int argc, char **argv) { extern char *optarg; extern int optind; int c, err = 0; int mflag=0, pflag=0, fflag = 0, sflag=0; char *sname = "default_sname", *fname; static char usage[] = "usage: %s [-dmp] -f fname [-s sname] name [name ...] ";

while ((c = getopt(argc, argv, "df:mps:")) != -1) switch (c) { case 'd': debug = 1; break; case 'm': mflag = 1; break; case 'p': pflag = 1; break; case 'f': fflag = 1; fname = optarg; break; case 's': sflag = 1; sname = optarg; break; case '?': err = 1; break; } if (fflag == 0) { /* -f was mandatory */ fprintf(stderr, "%s: missing -f option ", argv[0]); fprintf(stderr, usage, argv[0]); exit(1); } else if ((optind+1) > argc) { /* need at least one argument (change +1 to +2 for two, etc. as needeed) */

printf("optind = %d, argc=%d ", optind, argc); fprintf(stderr, "%s: missing name ", argv[0]); fprintf(stderr, usage, argv[0]); exit(1); } else if (err) { fprintf(stderr, usage, argv[0]); exit(1); } /* see what we have */ printf("debug = %d ", debug); printf("pflag = %d ", pflag); printf("mflag = %d ", mflag); printf("fname = \"%s\" ", fname); printf("sname = \"%s\" ", sname); if (optind < argc) /* these are the arguments after the command-line options */ for (; optind < argc; optind++) printf("argument: \"%s\" ", argv[optind]); else { printf("no arguments left to process "); } exit(0); }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!