欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Unix/Linux程序設(shè)計之getopt函數(shù)淺談

Linux中g(shù)etopt函數(shù)用法:
    1、函數(shù)作用: 

成都創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計、做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)柳南,10年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

         getop函數(shù)用于解析命令行參數(shù)的以'-'或者‘--'開頭的參數(shù)選項,除去'-'或者'--'選項元素
    如果被重復(fù)調(diào)用,則它將會依次返回每個選項元素中選項字符。
    2、函數(shù)原型:

       #include <unistd.h>
    int getopt(int argc, char * const argv[],
                  const char *optstring);
    extern char *optarg;
    extern int optind, opterr, optopt;


  其中幾個全局變量的含義:
              extern char *optarg:保存必須接參數(shù)的選型元素的參數(shù),
        extern int optind:指示下一個要解析的參數(shù)位置,初始值為1,
        extern int opterr:設(shè)置為0將不打印錯誤信息。
        extern int optopt:當發(fā)現(xiàn)無效選項字符之時,getopt()函數(shù)或返回'?'字符,或返回':'字符,并且optopt包含了所發(fā)現(xiàn)的無效選項字符。
    3、函數(shù)參數(shù)解析:
            a、int argc, char * const argv[],分別存放main函數(shù)的參數(shù),
            b、char *optstring需要解析的參數(shù)
                1. 單個字符,表示選項,這里一共有t、d、c、h、q五個選項
                2. 單個字符后接一個冒號“:”表示該選項后必須跟一個參數(shù),參數(shù)緊跟在選項后或者以空格隔開
                3. 單個字符后跟兩個冒號,表示該選項后可以跟一個參數(shù),也可以不跟,如果后邊跟一個參數(shù),參數(shù)必須緊跟在選項后不能以空格隔開
                4、如果optstring參數(shù)的第一個字符是冒號,那么getopt()函數(shù)就會保持沉默,并根據(jù)錯誤情況返回不同字符,如下:
            “無效選項” —— getopt()返回'?',并且optopt包含了無效選項字符(這是正常的行為)。
            “缺少選項參數(shù)” —— getopt()返回':',如果optstring的第一個字符不是冒號,那么getopt()返回'?',這會使得這種情況不能與無效選項的情況區(qū)分開。
    4、返回值:
        如果當前處理的參數(shù)為選項參數(shù),且該選項字符串optstring字符串中,即為定義的選項,則返回該選項字符。
        如果當前處理的參數(shù)不是選項參數(shù),則optind偏移向下一個參數(shù),直到找到第一個選項參數(shù)為止,然后再按之前的描述操作,如果找不到選項參數(shù),說明解析結(jié)束,則返回-1
        
    5、測試用例:
        1、最基本用法:

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

int main(int argc,char *argv[])
{
        int oc;          //選項字符
        char *b_opt_arg;        //選項參數(shù)字符串
        while((oc = getopt(argc,argv,"ngl:")) != -1)
        {
                switch(oc)
                {
                        case 'n':
                                printf("My name is fengkai\n");
                                break;
                        case 'g':
                                printf("Her name is zhanghaun\n");
                                break;
                        case 'l':
                                b_opt_arg = optarg;
                                printf("Our love is %s\n",b_opt_arg);
                                break;
                }
        }
        return 0;
}


        2、加上“:”后接參數(shù)的情況:

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<errno.h>
int main(int argc,char *argv[])
{
        int oc;          //選項字符
        char *b_opt_arg;        //選項參數(shù)字符串
        while((oc = getopt(argc,argv,"ngl:")) != -1)
        {
                switch(oc)
                {
                        case 'n':
                                printf("My name is fengkai\n");
                                break;
                        case 'g':
                                printf("Her name is zhanghaun\n");
                                break;
                        case 'l':
                                b_opt_arg = optarg;
                                printf("Our love is %s\n",b_opt_arg);
                                break;
                        case '?':
                                printf("arguement error\n");
                                break;
                }
        }
        return 0;
}

    3、參數(shù)開始加上":"根據(jù)出錯情況返回:

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<errno.h>
int main(int argc,char *argv[])
{
        int oc;          //選項字符
        char ec;     //無效的選項字符
        char *b_opt_arg;        //選項參數(shù)字符串
        while((oc = getopt(argc,argv,":ngl:")) != -1)
        {
                switch(oc)
                {
                        case 'n':
                                printf("My name is fengkai\n");
                                break;
                        case 'g':
                                printf("Her name is zhanghaun\n");
                                break;
                        case 'l':
                                b_opt_arg = optarg;
                                printf("Our love is %s\n",b_opt_arg);
                                break;
                        case '?':
                                printf("arguement error\n");
                                break;
                        case ':':
                                printf("缺少選項參數(shù)!\n");
                                break;
                }
        }
        return 0;
}

當前標題:Unix/Linux程序設(shè)計之getopt函數(shù)淺談
轉(zhuǎn)載源于:http://chinadenli.net/article0/jggdoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、面包屑導(dǎo)航、用戶體驗、、電子商務(wù)、App設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
91亚洲人人在字幕国产| 加勒比日本欧美在线观看| 亚洲一区二区精品久久av| 亚洲专区中文字幕在线| 国产免费黄片一区二区| 精品高清美女精品国产区| 国产麻豆精品福利在线| 国产精品美女午夜福利| 亚洲成人精品免费在线观看| 有坂深雪中文字幕亚洲中文 | 国产精品视频一级香蕉| 日本午夜一本久久久综合| 色播五月激情五月婷婷| 国产成人综合亚洲欧美日韩| 老司机激情五月天在线不卡| 91后入中出内射在线| 国产精品美女午夜福利| 国产高清精品福利私拍| 搡老熟女老女人一区二区| 日本和亚洲的香蕉视频| 亚洲专区中文字幕视频| 亚洲一区二区三区三州| 国产一区二区三区香蕉av| 国产精品免费视频专区| 欧美国产日本免费不卡| 老富婆找帅哥按摩抠逼视频| 欧美成人精品国产成人综合| 在线观看免费午夜福利| 中文字幕高清不卡一区| 91偷拍与自偷拍精品| 亚洲国产av在线观看一区| 尹人大香蕉中文在线播放| 成人午夜激情免费在线| 在线欧洲免费无线码二区免费| 99精品国产一区二区青青| 日韩精品一区二区毛片| 成人免费在线视频大香蕉| 我想看亚洲一级黄色录像| 欧洲一级片一区二区三区| 69精品一区二区蜜桃视频| 亚洲中文字幕有码在线观看|