getopt參數(shù)解析
??getopt()用來分析命令行參數(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之間不能有空格
?沒有’:’表示可選參數(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.長形參解析getopt_long
2.長形參解析getopt_long
#include
int getopt_long(int argc, char * const argv[],const char *optstring,const struct option *longopts, int *longindex);
函數(shù)功能:長形參解析
形 參:argc、argv main函數(shù)參數(shù)
????optstring 短形參格式。例:a: b::cv
????????????一個(gè)’:’表示必帶參數(shù)
????????????兩個(gè)’::’表示可帶參數(shù),帶參數(shù)時(shí)第一參數(shù)必須和b之間不能有空格
????????????沒有’:’表示可選參數(shù)
???? longopts 長形參結(jié)構(gòu)體
????????struct option {
????????????const char *name; //長形參名
????????????int has_arg; //參數(shù)選擇標(biāo)志
????????????int *flag; //一般填NULL
????????????int val; //長形參解析成功返回標(biāo)志信息
????????????};
????????has_arg:
????????????#define no_argument 0 //不需要參數(shù)
????????????#define required_argument 1 //必須指定參數(shù)
????????????#define optional_argument 2 //參數(shù)可選
????Longindex:解析成成功返回的長形參結(jié)構(gòu)體數(shù)組下標(biāo)
返回值:解析成功返回短形參
????解析失敗返回?
????解析完成返回-1
??getopt_long完全兼容getopt短形參解析功能;在使用getopt_long實(shí)現(xiàn)長形參解析時(shí),初始化長形參longopts時(shí)最后一個(gè)結(jié)構(gòu)體成員一定要設(shè)置為全為0,否則會段錯(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))//長形參
{
printf("長形參:%s\n",loqngopts[index].name);
if(optarg!=NULL)
{
printf("\t內(nèi)容:%s\n",optarg);
}
while(cnt)>
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報(bào)投訴
-
參數(shù)
+關(guān)注
關(guān)注
11文章
1785瀏覽量
32090 -
getopt
+關(guān)注
關(guān)注
0文章
4瀏覽量
1890
發(fā)布評論請先 登錄
相關(guān)推薦
求教!!!如何利用labview串口對慣導(dǎo)模塊進(jìn)行參數(shù)解析,有協(xié)議!!!
求教!!!如何利用labview串口對慣導(dǎo)模塊進(jìn)行參數(shù)解析,有協(xié)議!!!
發(fā)表于 03-17 19:59
如何解析stm32從串口接收到的字符串中提取命令和數(shù)字參數(shù)?
如何解析stm32從串口接收到的字符串中提取命令和數(shù)字參數(shù)?
發(fā)表于 12-13 16:47
《運(yùn)算放大器參數(shù)解析與LTspice應(yīng)用仿真》+學(xué)習(xí)心得3第二章之電氣參數(shù)
非常感謝作者鄭薈民!非常感謝電子發(fā)燒友論壇!非常感謝人民郵電出版社!非常感謝中國工信出版集團(tuán)!非常感謝給的這一次試讀機(jī)會!
《運(yùn)算放大器參數(shù)解析與LTspice應(yīng)用仿真》作者簡介:鄭薈民,副高
發(fā)表于 10-05 21:33
Linux MTD下獲取Nand flash 各個(gè)參數(shù)的過程的詳細(xì)解析
Linux MTD下獲取Nand flash 各個(gè)參數(shù)的過程的詳細(xì)解析
發(fā)表于 10-30 08:38
?7次下載
什么是高頻板?詳細(xì)解析高頻板參數(shù)
本文開始介紹了高頻板的概念和高頻板線路板特點(diǎn),其次詳細(xì)解析了高頻板參數(shù),最后介紹了高頻板的生產(chǎn)流程。
發(fā)表于 05-03 16:05
?3.7w次閱讀
學(xué)會在Linux下使用getopt函數(shù)來獲取傳入的參數(shù)
在linux下有一個(gè)函數(shù)叫getopt就可以寫成-r -l -i 的形式,下面是一個(gè)使用openssl通信的程序,需要4個(gè)參數(shù)服務(wù)器ip -i、服務(wù)器端口-p、證書地址-c、私匙地址-s代碼如下,重點(diǎn)看while循環(huán)
發(fā)表于 05-06 17:17
?1162次閱讀
Linux系統(tǒng)中getopt_long及其使用
,????????? 0, NULL, 0}????? };調(diào)用時(shí)需要把main的兩個(gè)參數(shù)argc和argv以及上述兩個(gè)數(shù)據(jù)結(jié)構(gòu)傳給getopt_long。每次調(diào)用getopt_long,它會
發(fā)表于 04-02 14:33
?1764次閱讀
MXNet源碼解讀筆記一 ---- 如何解析參數(shù)文件
本文主要內(nèi)容是解讀MXNet是加載模型參數(shù)文件并解析得到NDArray所涉及到的代碼,希望讀者讀完本文能對MXNet參數(shù)文件的格式有清晰的了解,...
發(fā)表于 02-07 11:12
?0次下載
MOSFET數(shù)據(jù)手冊常見參數(shù)解析——EASIGSS/Rds(on)/Coss
MOSFET數(shù)據(jù)手冊常見參數(shù)解析——EASIGSS/Rds(on)/Coss
IGBT單管數(shù)據(jù)手冊參數(shù)解析(上)
這篇文章是《英飛凌工業(yè)半導(dǎo)體》系列原創(chuàng)文章的第204篇,IGBT單管數(shù)據(jù)手冊參數(shù)解析(上)
發(fā)表于 12-06 11:54
?28次下載
IGBT單管數(shù)據(jù)手冊參數(shù)解析(下)
這篇文章是英飛凌工業(yè)半導(dǎo)體微信公眾號系列原創(chuàng)文章第205篇,IGBT單管數(shù)據(jù)手冊參數(shù)解析(下)
發(fā)表于 12-06 11:56
?21次下載
評論