日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一区二区三区高清在线 | 欧美日韩一区二区三区69堂 | 色葡萄影院 | 成人香蕉视频 | 欧美日韩精品一区二区在线观看 | 懂色av一区二区三区 | 一级毛毛片 | 男生草女生的视频 | 中日韩在线 | 国产成人综合亚洲 | 怡春院欧美 | 香港三级日本三级三69 | 亚洲免费资源 | 婷婷俺也去 | 天天做天天爱天天爽综合网 | 一级性视频 | 久久视频一区二区三区 | 永久av网站 | 丰满熟女人妻一区二区三 | 青青久久久 | 国产精品乱码久久久久久 | 色婷婷视频网 | 在线观看日本一区二区 | 精品国产aⅴ | 久久国产精品久久国产精品 | 国产精品乱 | 日本亚洲网站 | av亚洲在线 | 国产又色又爽无遮挡免费 | 欧美日韩国产激情 | 亚洲精品国产精品乱码桃花 | 国产伦乱视频 | 99热热热热| 91丝袜一区二区三区 | 男人天堂欧美 | 奇米影视9999 | 免费久久 | 成人久久影院 | 欧美三级韩国三级日本三斤 | 中文字幕日韩三级片 | 国产福利在线观看 | 三上悠亚 在线观看 | 国产99999 | 色综合天天综合网天天狠天天 | 深夜福利久久 | 成人资源站 | 亚洲av综合色区无码一二三区 | 国产精品理论片在线观看 | 免费黄片毛片 | 69久久久| 欧美色图888 | 成年人网站在线观看视频 | 91桃色污 | 又骚又黄的视频 | 大地资源在线观看免费高清版粤语 | 欧美91精品久久久久国产性生爱 | 国产盗摄一区二区三区在线 | 97自拍视频在线 | 深田咏美中文字幕 | 女同一区 | 98自拍视频 | 黑人巨大精品欧美一区二区蜜桃 | 青青草草视频 | 免费成人高清在线视频 | 久久久久免费 | 国产成人精品一区二区在线观看 | 96久久久| heyzo在线播放 | 亚洲播放器 | 亚洲国产成人va在线观看天堂 | 亚洲欧美日韩激情 | 国产丝袜第一页 | 秘密基地在线观看完整版免费 | 美国一级大黄一片免费中文 | 人人妻人人澡人人爽精品 | 在线免费看污网站 | 艳妇臀荡乳欲伦交换在线播放 | 性一交一乱一伧老太 | 国内自拍小视频 | 日日精品 | 村上凉子av | 国产综合无码一区二区色蜜蜜 | v天堂在线观看 | 在线免费视频你懂的 | 高清一区二区三区 | 蜜臀久久精品 | 韩国伦理片免费看 | 亚洲黄片一区二区 | 97精品超碰一区二区三区 | 摸摸大奶子| 青青插 | 久久偷看各类wc女厕嘘嘘偷窃 | 亚洲中文字幕无码专区 | 一区二区三区在线免费 | 伊人久久综合视频 | 一呦二呦三呦精品网站 | 亚洲激情视频在线播放 | 中国爆后菊女人的视频 | 在线观看免费日韩av |