国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Windows下使用GetOpt函數(shù)使用

GetOpt庫(kù)下載

GetOpt.h是一個(gè)GNU標(biāo)準(zhǔn)庫(kù)的頭文件,它包含一些從命令行上提取參數(shù)的工具用于基于文本C/C++應(yīng)用程序。因?yàn)間etopt.h不是ANSI C標(biāo)準(zhǔn)庫(kù)的一部分,getopt必須編譯到每個(gè)使用它的項(xiàng)目中,或者編譯它倒一個(gè)靜態(tài)類,顯式的鏈接到程序中。在Windows下有一個(gè)預(yù)編譯的getopt版本可用使用,其下載網(wǎng)址為:
http://ieng6.ucsd.edu/~cs12x/vc08install/getopt9.zip
把壓縮文件中的getopt.h頭文件和getopt.lib庫(kù)文件拷貝到你的計(jì)算機(jī)中,然后添加這些目錄到VC++搜索路徑中,以至于getopt庫(kù)可以像標(biāo)準(zhǔn)庫(kù)的一部分使用。
注:在CodeProject網(wǎng)站上也提供基于C的GetOpt庫(kù)實(shí)現(xiàn),下載網(wǎng)址為:
http://www.codeproject.com/Articles/157001/Full-getopt-Port-for-Unicode-and-Multibyte-Microso
         在項(xiàng)目中使用該源代碼時(shí),在預(yù)編譯定義中添加STATIC_GETOPT選項(xiàng)。

使用實(shí)例

假如一個(gè)應(yīng)用程序需要下面的短選項(xiàng)和長(zhǎng)選項(xiàng)。
短選項(xiàng)有-h,-o filename,-v,所對(duì)應(yīng)的長(zhǎng)選項(xiàng)為--help,--outputfilename,--version。為了使用getopt_long函數(shù),需要先定義兩個(gè)變量。
一個(gè)字符串:”ho:v”,因?yàn)?o后面有參數(shù)filename,因此字符后面需要加“:”。
一個(gè)包含長(zhǎng)選項(xiàng)字符串的option數(shù)組,每個(gè)option結(jié)構(gòu)包括4個(gè)字段,分別為長(zhǎng)選項(xiàng)字符串、標(biāo)識(shí)(是否帶參數(shù))、NULL和短選項(xiàng)字符串,最后一個(gè)元素全為空,表示結(jié)束。
const structoption long_options[] = {
  {“help”, 0, NULL, ‘h’},
  {“output”, 1, NULL, ‘o’},
  {“version”, 0, NULL, ‘v’},
  {NULL, 0, NULL, 0}
};
調(diào)用的時(shí)候把main中兩個(gè)參數(shù)argc和argv以及上述兩個(gè)參數(shù)傳遞給getopt_long函數(shù),每次調(diào)用getopt_long會(huì)解析出一個(gè)符號(hào),返回相應(yīng)的短選項(xiàng),解析完成返回-1。
如果遇到一個(gè)無(wú)效的短選項(xiàng)字符,會(huì)返回一個(gè)‘?’字符,解析到一個(gè)長(zhǎng)選項(xiàng)并且發(fā)現(xiàn)沒有參數(shù)則返回’:’字符,表示缺乏參數(shù)。當(dāng) getopt_long() 返回 0 時(shí),longIndex 所指向的整數(shù)將設(shè)置為當(dāng)前找到的長(zhǎng)選項(xiàng)的索引。
全局變量optarg表示下一個(gè)要處理的變量,當(dāng)getopt_long處理完所有的選項(xiàng)后,optind指向第一個(gè)未知的選項(xiàng)索引。代碼如下:
#include<getopt.h>                // 包含頭文件
#pragma comment(lib,“getopt.lib”)   // 加載靜態(tài)庫(kù)文件(Windows)
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char**argv)
{
struct globalArgs_t {
    int noIndex;                /* -I option */
    char *langCode;             /* -l option */
    const char *outFileName;    /* -o option */
    FILE *outFile;
    int verbosity;              /* -v option */
    char **inputFiles;          /* input files */
    int numInputFiles;          /* # of input files */
    int randomized;             /* --randomize option */
} globalArgs;
static const char *optString = "Il:o:vh?";
 
static conststruct option longOpts[] = {
    { "no-index", no_argument, NULL,'I' },
    { "language", required_argument,NULL, 'l' },
    { "output", required_argument,NULL, 'o' },
    { "verbose", no_argument, NULL,'v' },
    { "randomize", no_argument, NULL,0 },
    { "help", no_argument, NULL, 'h'},
    { NULL, no_argument, NULL, 0 }
};
  opt = getopt_long( argc, argv, optString, longOpts, &longIndex );
    while( opt != -1 ) {
        switch( opt ) {
            case 'I':
                globalArgs.noIndex = 1; /* true */
                break;
            case 'l':
                globalArgs.langCode = optarg;
                break;
            case 'o':
                globalArgs.outFileName = optarg;
                break;
            case 'v':
                globalArgs.verbosity++;
                break;
            case 'h':   /* fall-through is intentional */
            case '?':
                display_usage();
                break;
            case 0:     /* long option without a short arg */
                if( strcmp( "randomize", longOpts[longIndex].name ) == 0 ) {
                    globalArgs.randomized = 1;
                }
                break;
            default:
                /* You won't actually get here. */
                break;
        }
        opt = getopt_long( argc, argv, optString, longOpts, amp;longIndex );
    }
}
注:getopt()函數(shù)的處理過程getopt_long相似,就是缺少long_options參數(shù)。
注:在Linux中g(shù)etopt_long()函數(shù)在 getopt.h 頭文件(而非 unistd.h)中,getopt()在頭文件
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
(轉(zhuǎn))linux下 getopt() 函數(shù)的使用
getopt()和getopt_long()函數(shù)參數(shù)分析
Linux編程里getopt_long_only函數(shù)用法詳解
getopt函數(shù)的使用
getopt終端控制函數(shù)
Linux環(huán)境(一)--程序參數(shù)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服