getopt參數(shù)解析
??getopt()用來(lái)分析命令行參數(shù)。
1.短形參解析getopt
#include
int getopt(int argc, char * const argv[],const char *optstring);
?extern char *optarg;
?extern int optind, opterr, optopt;
函數(shù)功能:短形參解析
?形 參:argc、argv main函數(shù)參數(shù)
?optstring 短形參格式。例:a: b::cv
?一個(gè)’:’表示必帶參數(shù)
?兩個(gè)’::’表示可帶參數(shù),帶參數(shù)時(shí)第一參數(shù)必須和b之間不能有空格
?沒(méi)有’:’表示可選參數(shù)
返回值:解析成功返回短形參
解析失敗返回?
解析完成返回-1
全局變量:
?optarg – 保存短形參后面的第一個(gè)參數(shù)(必帶參數(shù)和可帶參數(shù)才能得到)
?optind – 再次調(diào)用 getopt() 時(shí)的下一個(gè) argv 指針的索引
?opterr – 錯(cuò)誤值信息
?optopt – 參數(shù)解析失敗是返回短形參值,成功則為0
#include
#include
int main(int argc,char *argv[])
{
int opt;
int cnt;
while(1)
{
opt=getopt(argc,argv,"a:b::vh");
if(opt==-1)break;
cnt=optind;
switch(opt)
{
case 'a':
printf("參數(shù):%c\n",opt);
printf("\t內(nèi)容:%s\n",optarg);
while(cnt
2.長(zhǎng)形參解析getopt_long
2.長(zhǎng)形參解析getopt_long
#include
int getopt_long(int argc, char * const argv[],const char *optstring,const struct option *longopts, int *longindex);
函數(shù)功能:長(zhǎng)形參解析
形 參:argc、argv main函數(shù)參數(shù)
????optstring 短形參格式。例:a: b::cv
????????????一個(gè)’:’表示必帶參數(shù)
????????????兩個(gè)’::’表示可帶參數(shù),帶參數(shù)時(shí)第一參數(shù)必須和b之間不能有空格
????????????沒(méi)有’:’表示可選參數(shù)
???? longopts 長(zhǎng)形參結(jié)構(gòu)體
????????struct option {
????????????const char *name; //長(zhǎng)形參名
????????????int has_arg; //參數(shù)選擇標(biāo)志
????????????int *flag; //一般填NULL
????????????int val; //長(zhǎng)形參解析成功返回標(biāo)志信息
????????????};
????????has_arg:
????????????#define no_argument 0 //不需要參數(shù)
????????????#define required_argument 1 //必須指定參數(shù)
????????????#define optional_argument 2 //參數(shù)可選
????Longindex:解析成成功返回的長(zhǎng)形參結(jié)構(gòu)體數(shù)組下標(biāo)
返回值:解析成功返回短形參
????解析失敗返回?
????解析完成返回-1
??getopt_long完全兼容getopt短形參解析功能;在使用getopt_long實(shí)現(xiàn)長(zhǎng)形參解析時(shí),初始化長(zhǎng)形參longopts時(shí)最后一個(gè)結(jié)構(gòu)體成員一定要設(shè)置為全為0,否則會(huì)段錯(cuò)誤。
#include
#include
struct option loqngopts[]=
{
{"version",no_argument,NULL,'v'},//不帶參數(shù)
{"help",no_argument,NULL,'h'},//不帶參數(shù)
{"prefix=",required_argument,NULL,'p'},//必帶參數(shù)
{"a123",optional_argument,NULL,'a'},//可選參數(shù)
{0,0,0,0}, //最后一個(gè)成員必須全為0
};
int main(int argc,char *argv[])
{
int index;
int opt;
int cnt;
while(1)
{
opt=getopt_long(argc,argv,"a:b::vh",loqngopts,&index);
if(opt==-1)break;//解析完成
cnt=optind;
switch(opt)
{
case 'a':
printf("index=%d\n",index);
if(index<=sizeof(loqngopts)/sizeof(struct option))//長(zhǎng)形參
{
printf("長(zhǎng)形參:%s\n",loqngopts[index].name);
if(optarg!=NULL)
{
printf("\t內(nèi)容:%s\n",optarg);
}
while(cnt)>
-
參數(shù)
+關(guān)注
關(guān)注
11文章
1867瀏覽量
33093 -
getopt
+關(guān)注
關(guān)注
0文章
4瀏覽量
1955
發(fā)布評(píng)論請(qǐng)先 登錄
求教?。?!如何利用labview串口對(duì)慣導(dǎo)模塊進(jìn)行參數(shù)解析,有協(xié)議!!!
如何解析stm32從串口接收到的字符串中提取命令和數(shù)字參數(shù)?
《運(yùn)算放大器參數(shù)解析與LTspice應(yīng)用仿真》+學(xué)習(xí)心得3第二章之電氣參數(shù)
請(qǐng)問(wèn)如何解析從串口接收到的字符串中提取命令和數(shù)字參數(shù)?
Linux MTD下獲取Nand flash 各個(gè)參數(shù)的過(guò)程的詳細(xì)解析

getopt()在Python的使用說(shuō)明
什么是高頻板?詳細(xì)解析高頻板參數(shù)
學(xué)會(huì)在Linux下使用getopt函數(shù)來(lái)獲取傳入的參數(shù)
Linux系統(tǒng)中getopt_long及其使用
MXNet源碼解讀筆記一 ---- 如何解析參數(shù)文件

TI eSMO 庫(kù)Fsmopos和Gsmopos參數(shù)解析

MOSFET數(shù)據(jù)手冊(cè)常見參數(shù)解析——EASIGSS/Rds(on)/Coss

評(píng)論