1. 程式人生 > >getopt函式應用

getopt函式應用

Linux下傳入指定的長選項和短選項引數,輸出指定的結果。如果輸入非法命令,輸出提示資訊。

開發環境:CodeBlocks

#include <stdio.h>
#include <stdlib.h>

#define _GNU_SOURCE
#include <getopt.h>

int main(int argc, char *argv[])
  int opt, a, b;
    struct option longopts[] =
    {
        {"add", 1, NULL, 'a'},
        {"square", 1, NULL, 's'},
        {"list", 1, NULL, 'l'},
        {0,0,0,0},
    };

    while((opt = getopt_long(argc, argv, ":a:s:l:", longopts, NULL)) != -1)
    {
        switch(opt)
        {
        case 'a':
            a = atol(optarg);
            b = atol(argv[optind]);
            printf("option: %c %d + %d = %d\n", opt, a, b, a + b);
            break;
        case 's':
            a = atol(optarg);
            printf("option: %c %d * %d = %d\n", opt, a, a, a*a);
            break;
        case 'l':
            printf("file is : %s\n", optarg);
            break;
        case ':':
            printf("option needs a value\n");
            break;
        case '?':
            printf("unknown option: %c\n", optopt);
            break;
        }
    }

    exit(0);
}

程式首先,定義了struct option結構體,每個結構描述了一個長選項的行為,該陣列必須以一個全0的結構收尾。

然後使用getopt_long函式,對輸入的各種長選項短選項進行識別並做出相應的處理。如果有非法選項,返回?,並輸出一定的資訊。如果沒有輸入引數,返回:,並且輸出一定的提示資訊。

執行結果: