Answers

Question and Answer:

  Home  C Programming

⟩ How can I open files mentioned on the command line, and parse option flags?

Here is a skeleton which implements a traditional Unix-style argv parse, handling option flags beginning with -, and optional filenames. (The two flags accepted by this example are -a and -b; -b takes an argument.)

#include <stdio.h>

#include <string.h>

#include <errno.h>

main(int argc, char *argv[])

{

int argi;

int aflag = 0;

char *bval = NULL;

for(argi = 1; argi < argc && argv[argi][0] == '-'; argi++) {

char *p;

for(p = &argv[argi][1]; *p != ''; p++) {

switch(*p) {

case 'a':

aflag = 1;

printf("-a seenn");

break;

case 'b':

bval = argv[++argi];

printf("-b seen ("%s")n", bval);

break;

default:

fprintf(stderr,

"unknown option -%cn", *p);

}

}

}

if(argi >= argc) {

/* no filename arguments; process stdin */

printf("processing standard inputn");

} else {

/* process filename arguments */

for(; argi < argc; argi++) {

FILE *ifp = fopen(argv[argi], "r");

if(ifp == NULL) {

fprintf(stderr, "can't open %s: %sn",

argv[argi], strerror(errno));

continue;

}

printf("processing %sn", argv[argi]);

fclose(ifp);

}

}

return 0;

}

 107 views

More Questions for you: