intgetopt(intargc,char*constargv[],constchar*optstring);extern">
getopt(分析命令行參數(shù))

getopt(分析命令行參數(shù))

ID:41028579

大?。?8.56 KB

頁數(shù):14頁

時間:2019-08-14

getopt(分析命令行參數(shù))_第1頁
getopt(分析命令行參數(shù))_第2頁
getopt(分析命令行參數(shù))_第3頁
getopt(分析命令行參數(shù))_第4頁
getopt(分析命令行參數(shù))_第5頁
資源描述:

《getopt(分析命令行參數(shù))》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、Getopt命令行參數(shù)解析函數(shù)——getopt()getopt()函數(shù)聲明如下:#includeintgetopt(intargc,char*constargv[],constchar*optstring);externchar*optarg;externintoptind,opterr,optopt;  該函數(shù)的argc和argv參數(shù)通常直接從main()的參數(shù)直接傳遞而來。optstring是選項字母組成的字串。如果該字串里的任一字符后面有冒號,那么這個選項就要求有選項參數(shù)?! ‘?dāng)給定getopt()命令參數(shù)的數(shù)量

2、(argc)、指向這些參數(shù)的數(shù)組(argv)和選項字串(optstring)后,getopt()將返回第一個選項,并設(shè)置一些全局變量。使用相同的參數(shù)再次調(diào)用該函數(shù)時,它將返回下一個選項,并設(shè)置相應(yīng)的全局變量。如果不再有可識別的選項,將返回-1,此任務(wù)就完成了?! etopt()所設(shè)置的全局變量包括:  char*optarg——當(dāng)前選項參數(shù)字串(如果有)?! ntoptind——argv的當(dāng)前索引值。當(dāng)getopt()在while循環(huán)中使用時,循環(huán)結(jié)束后,剩下的字串視為操作數(shù),在argv[optind]至argv[argc-1]中可以

3、找到?! ntopterr——這個變量非零時,getopt()函數(shù)為“無效選項”和“缺少參數(shù)選項,并輸出其錯誤信息?! ntoptopt——當(dāng)發(fā)現(xiàn)無效選項字符之時,getopt()函數(shù)或返回'?'字符,或返回':'字符,并且optopt包含了所發(fā)現(xiàn)的無效選項字符?!∫韵旅娴某绦驗槔骸 ∵x項:  -n——顯示“我的名字”?! ?g——顯示“我女朋友的名字”?! ?l——帶參數(shù)的選項.  清單2:  #include  #include  intmain(intargc,char**argv)  {

4、  intoc;????????????????????/*選項字符*/  char*b_opt_arg;???????????/*選項參數(shù)字串*/  while((oc=getopt(argc,argv,"ngl:"))!=-1)  {  switch(oc)  {  case'n':  printf("MynameisLyong.");  break;  case'g':  printf("HernameisXxiong.");  break;  case'l':  b_opt_arg=optarg;  printf("Our

5、loveis%s",optarg);  break;  }  }  return0;  }  運(yùn)行結(jié)果:  $./opt_parse_demo-n  MynameisLyong.  $./opt_parse_demo-g  HernameisXxiong.  $./opt_parse_demo-lforever  Ourloveisforever  $./opt_parse_demo-nglforever  MynameisLyong.  HernameisXxiong.  Ourloveisforever  6、改變getopt()

6、對錯誤命令行參數(shù)信息的輸出行為  不正確的調(diào)用程序在所難免,這種錯誤要么是命令行選項無效,要么是缺少選項參數(shù)。正常情況下,getopt()會為這兩種情況輸出自己的出錯信息,并且返回'?'。為了驗證此事,可以修改一下上面的清單2中的代碼?! ∏鍐?:  #include  #include  intmain(intargc,char**argv)  {  intoc;????????????????????/*選項字符*/  char*b_opt_arg;???????????/*選項參數(shù)字串*/  w

7、hile((oc=getopt(argc,argv,"ngl:"))!=-1)  {  switch(oc)  {  case'n':  printf("MynameisLyong.");  break;  case'g':  printf("HernameisXxiong.");  break;  case'l':  b_opt_arg=optarg;  printf("Ourloveis%s",optarg);  break;  case'?':  printf("argumentserror!");  break; 

8、 }  }  return0;  }  輸入一個錯誤的命令行,結(jié)果如下:  $./opt_parse_demo-l  ./opt_parse_demo:optionrequiresanargu

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。