C 語言getopt與go語言flag獲取命令參數(shù)

C語言中的getopt()函數(shù)為命令參數(shù)的獲取提供了很大便利,與golang中的flag功能類似析恋。

C語言getopt

     下面以ssh中獲取主機(jī)名/ip和用戶名為例來示例如何使用getopt().
    int get_user_host(int ac, char **av, char *host, char *user){

    char *p, *cp;
    extern int optind;
    int opt;

    again:
    while ((opt = getopt(ac, av, "1246AaCfgKkMNnqsTtVvXxYyb:c:D:e:F:I:i:L:l:m:O:o:p:R:S:W:w:")) != -1){

        switch (opt){
        case '1':
            break;
        case '2':
            break;
        case '4':
            break;
        case '6':
            break;
        case 'A':
            break;
        case 'a':
            break;
        case 'C':
            break;
        case 'f':
            break;
        case 'g':
            break;
        case 'K':
            break;
        case 'k':
            break;
        case 'M':
            break;
        case 'N':
            break;
        case 'n':
            break;
        case 'q':
            break;
        case 's':
            break;
        case 'T':
            break;
        case 't':
            break;
        case 'V':
            break;
        case 'v':
            break;
        case 'X':
            break;
        case 'x':
            break;
        case 'Y':
            break;
        case 'y':
            break;
        case 'b':
            break;
        case 'c':
            break;
        case 'D':
            break;
        case 'e':
            break;
        case 'F':
            break;
        case 'I':
            break;
        case 'i':
            break;
        case 'L':
            break;
        case 'l':
            break;
        case 'm':
            break;
        case 'O':
            break;
        case 'o':
            break;
        case 'p':
            break;
        case 'R':
            break;
        case 'S':
            break;
        case 'W':
            break;
        case 'w':
            break;
        default:
            return -3;
        }
    }

    ac -= optind;
    av += optind;

    if (ac > 0 && strlen(host)==0 &&  **av != '-') {
        if (strrchr(*av, '@')) {
            p = strdup(*av);
            cp = strchr(p, '@');
            if (cp == NULL || cp == p){
                printf("can not find username nearby @");
                printf("\n");
                return -1;;
            }
            *cp = '\0';
            user = strcpy(user, p);
            host = strcpy(host,++cp);
        } else{
            host = strcpy(host, *av);
        }
       if (ac >1 ){
          optind  = 1;
          goto again;
       }
       ac--, av++;
     }
    if (strlen(host)==0){
        printf("can not find host address in parameters");
        printf("\n");
        return -2;
    }
return 0;
}

go語言flag

    go的flag相比于c的getopt使用起來簡單很多。
cfgPath := flag.String("c","/etc/cfg.toml","cfg path")
nowaitFlag :=flag.Bool("w",false,"do not wait")

函數(shù)中第一個(gè)命令是"-c"、"-w"中的指示詞构资,第二個(gè)為默認(rèn)值割坠,第三個(gè)為說明齐帚。無論順序,只要正常出現(xiàn)就能解析彼哼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末对妄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子敢朱,更是在濱河造成了極大的恐慌剪菱,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拴签,死亡現(xiàn)場離奇詭異孝常,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蚓哩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進(jìn)店門构灸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人岸梨,你說我怎么就攤上這事喜颁。” “怎么了盛嘿?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵洛巢,是天一觀的道長。 經(jīng)常有香客問我次兆,道長稿茉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮漓库,結(jié)果婚禮上恃慧,老公的妹妹穿的比我還像新娘。我一直安慰自己渺蒿,他們只是感情好痢士,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茂装,像睡著了一般施敢。 火紅的嫁衣襯著肌膚如雪瓦呼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天,我揣著相機(jī)與錄音愚屁,去河邊找鬼先巴。 笑死肉津,一個(gè)胖子當(dāng)著我的面吹牛杆故,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侨歉,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼屋摇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了幽邓?” 一聲冷哼從身側(cè)響起炮温,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎牵舵,沒想到半個(gè)月后茅特,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡棋枕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年白修,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片重斑。...
    茶點(diǎn)故事閱讀 38,768評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兵睛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出窥浪,到底是詐尸還是另有隱情祖很,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布漾脂,位于F島的核電站假颇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏骨稿。R本人自食惡果不足惜笨鸡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一姜钳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧形耗,春花似錦哥桥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至倦踢,卻和暖如春送滞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辱挥。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工累澡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人般贼。 一個(gè)月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像奥吩,于是被迫代替她去往敵國和親哼蛆。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評論 2 350

推薦閱讀更多精彩內(nèi)容