getopt函式應用
阿新 • • 發佈:2018-12-11
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函式,對輸入的各種長選項短選項進行識別並做出相應的處理。如果有非法選項,返回?,並輸出一定的資訊。如果沒有輸入引數,返回:,並且輸出一定的提示資訊。
執行結果: