打开命令行提到的文件并处理参数

#include <stdio.h>
#include <string.h>
#include <errno.h>

int main (int argc, const char * argv[]) {
    int argi;
    int aflag = 0;
    char *bval = NULL;
    
    for (argi = 1; argi < argc && argv[argi][0] == '-'; argi++) {
        char *p;
        for (p = (char *)&argv[argi][1]; *p != '\0'; p++) {
            switch (*p) {
                case 'a':
                    aflag = -1;
                    printf("-a seen!\n");
                    break;
                case 'b':
                    bval = (char *)argv[++argi];
                    printf("-b seen (\"%s\")\n", bval);
                    break;
                default:
                    fprintf(stderr, "unknown option -%c\n", *p);
            }
        }
    }
    if(argi >= argc) {
        /* no filename arguments; process stdin */
        printf("processing standard input\n");
    } else {
        /* process filename arguments */
        for(; argi < argc; argi++) {
            FILE* ifp = fopen(argv[argi], "r");
            if(ifp == NULL) {
                fprintf(stderr, "can't open %s: %s\n",
                        argv[argi], strerror(errno));
                continue;
            }
            printf(" processing %s\n", argv[argi]);
            fclose(ifp);
        }
    }
    return 0;
}

posted on 2011-04-15 23:51  Cheney Shen  阅读(234)  评论(0编辑  收藏  举报

导航