C Interview Questions and Answers

 

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;



}

Posted by:Richards