现在的位置: 首页 > 综合 > 正文

getopt_long

2018年04月21日 ⁄ 综合 ⁄ 共 1446字 ⁄ 字号 评论关闭

#include <stdio.h>     /* for printf */
#include <stdlib.h>    /* for exit */
#include <getopt.h>

int
main(int argc, char **argv)
{
    int c;
    int digit_optind = 0;

    while (1) {
        int this_option_optind = optind ? optind : 1;
        int option_index = 0;
        static struct option long_options[] = {
            {"add", 1, 0, 0},
            {"append", 0, 0, 0},
            {"delete", 1, 0, 0},
            {"verbose", 0, 0, 0},
            {"create", 1, 0, 'c'},
            {"file", 1, 0, 0},
            {0, 0, 0, 0}
        };

        c = getopt_long(argc, argv, "abc:d:012",
                        long_options, &option_index);
        if (c == -1)
        break;

        switch (c) {
            case 0:
            printf("option %s", long_options[option_index].name);
            if (optarg)
            printf(" with arg %s", optarg);
            printf("\n");
            break;

            case '0':
            case '1':
            case '2':
            if (digit_optind != 0 && digit_optind != this_option_optind)
            printf("digits occur in two different argv-elements.\n");
            digit_optind = this_option_optind;
            printf("option %c\n", c);
            break;

            case 'a':
            printf("option a\n");
            break;

            case 'b':
            printf("option b\n");
            break;

            case 'c':
            printf("option c with value '%s'\n", optarg);
            break;

            case 'd':
            printf("option d with value '%s'\n", optarg);
            break;

            case '?':
            break;

            default:
            printf("?? getopt returned character code 0%o ??\n", c);
        }
}

           if (optind < argc) {
               printf("non-option ARGV-elements: ");
               while (optind < argc)
               printf("%s ", argv[optind++]);
               printf("\n");
           }

           exit(EXIT_SUCCESS);
           }

【上篇】
【下篇】

抱歉!评论已关闭.