getopt參數解析
??getopt()用來分析命令行參數。
1.短形參解析getopt
#include
int getopt(int argc, char * const argv[],const char *optstring);
?extern char *optarg;
?extern int optind, opterr, optopt;
函數功能:短形參解析
?形 參:argc、argv main函數參數
?optstring 短形參格式。例:a: b::cv
?一個’:’表示必帶參數
?兩個’::’表示可帶參數,帶參數時第一參數必須和b之間不能有空格
?沒有’:’表示可選參數
返回值:解析成功返回短形參
解析失敗返回?
解析完成返回-1
全局變量:
?optarg – 保存短形參后面的第一個參數(必帶參數和可帶參數才能得到)
?optind – 再次調用 getopt() 時的下一個 argv 指針的索引
?opterr – 錯誤值信息
?optopt – 參數解析失敗是返回短形參值,成功則為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("參數:%c\n",opt);
printf("\t內容:%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);
函數功能:長形參解析
形 參:argc、argv main函數參數
????optstring 短形參格式。例:a: b::cv
????????????一個’:’表示必帶參數
????????????兩個’::’表示可帶參數,帶參數時第一參數必須和b之間不能有空格
????????????沒有’:’表示可選參數
???? longopts 長形參結構體
????????struct option {
????????????const char *name; //長形參名
????????????int has_arg; //參數選擇標志
????????????int *flag; //一般填NULL
????????????int val; //長形參解析成功返回標志信息
????????????};
????????has_arg:
????????????#define no_argument 0 //不需要參數
????????????#define required_argument 1 //必須指定參數
????????????#define optional_argument 2 //參數可選
????Longindex:解析成成功返回的長形參結構體數組下標
返回值:解析成功返回短形參
????解析失敗返回?
????解析完成返回-1
??getopt_long完全兼容getopt短形參解析功能;在使用getopt_long實現長形參解析時,初始化長形參longopts時最后一個結構體成員一定要設置為全為0,否則會段錯誤。
#include
#include
struct option loqngopts[]=
{
{"version",no_argument,NULL,'v'},//不帶參數
{"help",no_argument,NULL,'h'},//不帶參數
{"prefix=",required_argument,NULL,'p'},//必帶參數
{"a123",optional_argument,NULL,'a'},//可選參數
{0,0,0,0}, //最后一個成員必須全為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內容:%s\n",optarg);
}
while(cnt)>
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
參數
+關注
關注
11文章
1829瀏覽量
32195 -
getopt
+關注
關注
0文章
4瀏覽量
1894
發布評論請先 登錄
相關推薦
《運算放大器參數解析與LTspice應用仿真》+學習心得3第二章之電氣參數
非常感謝作者鄭薈民!非常感謝電子發燒友論壇!非常感謝人民郵電出版社!非常感謝中國工信出版集團!非常感謝給的這一次試讀機會!
《運算放大器參數解析與LTspice應用仿真》作者簡介:鄭薈民,副高
發表于 10-05 21:33
學會在Linux下使用getopt函數來獲取傳入的參數
在linux下有一個函數叫getopt就可以寫成-r -l -i 的形式,下面是一個使用openssl通信的程序,需要4個參數服務器ip -i、服務器端口-p、證書地址-c、私匙地址-s代碼如下,重點看while循環
發表于 05-06 17:17
?1167次閱讀
Linux系統中getopt_long及其使用
,????????? 0, NULL, 0}????? };調用時需要把main的兩個參數argc和argv以及上述兩個數據結構傳給getopt_long。每次調用getopt_long,它會
發表于 04-02 14:33
?1770次閱讀
MXNet源碼解讀筆記一 ---- 如何解析參數文件
本文主要內容是解讀MXNet是加載模型參數文件并解析得到NDArray所涉及到的代碼,希望讀者讀完本文能對MXNet參數文件的格式有清晰的了解,...
發表于 02-07 11:12
?0次下載
評論