日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言中使用库函数解析命令行参数

發(fā)布時間:2025/4/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言中使用库函数解析命令行参数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在編寫需要命令行參數(shù)的C程序的時候,往往我們需要先解析命令行參數(shù),然后根據(jù)這些參數(shù)來啟動我們的程序。

C的庫函數(shù)中提供了兩個函數(shù)可以用來幫助我們解析命令行參數(shù):getopt、getopt_long。

getopt可以解析短參數(shù),所謂短參數(shù)就是指選項前只有一個“-”(如-t),而getopt_long則支持短參數(shù)跟長參數(shù)(如"--prefix")。

?

getopt函數(shù)

#include<unistd.h> int getopt(int argc,char * const argv[],const char *optstring);
extern char *optarg; //當(dāng)前選項參數(shù)字串(如果有) extern int optind; //argv的當(dāng)前索引值

各參數(shù)的意義:

argc:通常為main函數(shù)中的argc

argv:通常為main函數(shù)中的argv

optstring:用來指定選項的內(nèi)容(如:"ab:c"),它由多個部分組成,表示的意義分別為:

1.單個字符,表示選項。

2 單個字符后接一個冒號:表示該選項后必須跟一個參數(shù)。參數(shù)緊跟在選項后或者以空格隔開。該參數(shù)的指針賦給optarg。

3 單個字符后跟兩個冒號,表示該選項后可以跟一個參數(shù),也可以不跟。如果跟一個參數(shù),參數(shù)必須緊跟在選項后不能以空格隔開。該參數(shù)的指針賦給optarg。

?

調(diào)用該函數(shù)將返回解析到的當(dāng)前選項,該選項的參數(shù)將賦給optarg,如果該選項沒有參數(shù),則optarg為NULL。下面將演示該函數(shù)的用法

1 #include <stdio.h> 2 #include <unistd.h> 3 #include <string.h> 4 5 int main(int argc,char *argv[]) 6 { 7 int opt=0; 8 int a=0; 9 int b=0; 10 char s[50]; 11 while((opt=getopt(argc,argv,"ab:"))!=-1) 12 { 13 switch(opt) 14 { 15 case 'a':a=1;break; 16 case 'b':b=1;strcpy(s,optarg);break; 17 } 18 } 19 if(a) 20 printf("option a\n"); 21 if(b) 22 printf("option b:%s\n",s); 23 return 0; 24 } View Code

編譯之后可以如下調(diào)用該程序

?

getopt_long函數(shù)

與getopt不同的是,getopt_long還支持長參數(shù)。

#include <getopt.h> int getopt_long(int argc, char * const argv[],const char *optstring,const struct option *longopts, int *longindex);

前面三個參數(shù)跟getopt函數(shù)一樣(解析到短參數(shù)時返回值跟getopt一樣),而長參數(shù)的解析則與longopts參數(shù)相關(guān),該參數(shù)使用如下的結(jié)構(gòu)

struct option {//長參數(shù)名const char *name;/*表示參數(shù)的個數(shù)no_argument(或者0),表示該選項后面不跟參數(shù)值required_argument(或者1),表示該選項后面一定跟一個參數(shù)optional_argument(或者2),表示該選項后面的參數(shù)可選*/int has_arg;//如果flag為NULL,則函數(shù)會返回下面val參數(shù)的值,否則返回0,并將val值賦予賦予flag所指向的內(nèi)存int *flag;//配合flag來決定返回值int val; };

參數(shù)longindex,表示當(dāng)前長參數(shù)在longopts中的索引值,如果不需要可以置為NULL。

下面是使用該函數(shù)的一個例子

1 #include <stdio.h> 2 #include <string.h> 3 #include <getopt.h> 4 5 int learn=0; 6 static const struct option long_option[]={ 7 {"name",required_argument,NULL,'n'}, 8 {"learn",no_argument,&learn,1}, 9 {NULL,0,NULL,0} 10 }; 11 12 int main(int argc,char *argv[]) 13 { 14 int opt=0; 15 while((opt=getopt_long(argc,argv,"n:l",long_option,NULL))!=-1) 16 { 17 switch(opt) 18 { 19 case 0:break; 20 case 'n':printf("name:%s ",optarg); 21 } 22 } 23 if(learn) 24 printf("learning\n"); 25 } View Code

編譯之后可以如下調(diào)用該程序

轉(zhuǎn)載于:https://www.cnblogs.com/runnyu/p/4943704.html

總結(jié)

以上是生活随笔為你收集整理的C语言中使用库函数解析命令行参数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本午夜影视 | 日本成人精品在线 | 久免费一级suv好看的国产 | 狠狠干夜夜骑 | 欧美一区二区免费 | 成人在线观看一区二区三区 | 国产又爽又黄免费软件 | 午夜免费大片 | 国产又黄又嫩又滑又白 | 日韩精品在线免费 | 国产做爰视频免费播放 | 国产黄色一区 | 毛片网站免费观看 | 久草热视频 | jizz91 | 国产一级特黄aaa大片 | 免费网站在线观看视频 | 天天添天天操 | 在线 日本 制服 中文 欧美 | 天天天操 | 中国亚洲女人69内射少妇 | 日韩欧美精品在线视频 | 91日批视频 | 一区二区三区精品久久久 | aav在线| 午夜激情视频 | 天天色天天综合 | 中文字幕在线影院 | 黄色一级生活片 | 一吻定情2013日剧 | 久久91久久 | 国产精品麻豆入口 | 国产草草视频 | 久久精品99国产精品日本 | 国产精品第一国产精品 | √资源天堂中文在线视频 | 久久精品视频免费观看 | 国产 丝袜 欧美中文 另类 | 91久久超碰 | 国产一区欧美一区 | 日韩伊人网 | 欧美一级免费视频 | 国模二区 | 亚洲自拍偷拍欧美 | 亚色图 | 老熟女重囗味hdxx69 | 俺也来俺也去俺也射 | 日韩视频在线视频 | 色婷婷久久久亚洲一区二区三区 | 亚洲天堂无吗 | 亚洲精品二 | 欧美极品少妇xxxxⅹ裸体艺术 | 亚洲福利电影网 | 久久午夜片 | 在线精品亚洲欧美日韩国产 | 日韩在线电影一区 | 风流少妇按摩来高潮 | 亚洲好看站 | 日韩视频网站在线观看 | 欧美久久久久久又粗又大 | 成人免费看av | 都市激情综合 | 日本免费网址 | 91成人免费看片 | 伊人网综合 | 日韩精品免费一区 | 播色网 | 欧美整片在线观看 | www.白浆| 国产乱码一区二区三区播放 | 久久久久久久网 | 污污的视频在线免费观看 | 国产国语对白 | 午夜成人免费影院 | 成人无码久久久久毛片 | 日韩精品一区在线 | 婷婷中文网 | 三级网站免费看 | 日韩精品一区二区三区久久 | 亚洲m码 欧洲s码sss222 | 久久成年 | 国产真人做爰视频免费 | 欧美一区二区三区啪啪 | 午夜av网址 | 91久久精品国产91久久性色tv | 欧美日韩在线免费播放 | 日本黄色xxxxx| 日本免费电影一区二区三区 | 69xxxx国产| 日韩欧美理论 | 精品伦精品一区二区三区视频密桃 | 爱情岛亚洲首页论坛 | 少妇高清精品毛片在线视频 | 久久精品免费一区二区 | 午夜免费一级片 | 国产一级片免费看 | 亚洲天堂一区在线观看 | 在线欧美成人 | 香蕉网在线观看 |