0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

getopt參數(shù)解析

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-08-19 11:26 ? 次閱讀

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


#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

    文章

    1834

    瀏覽量

    32220
  • getopt
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    1901
收藏 人收藏

    評論

    相關(guān)推薦

    求教?。?!如何利用labview串口對慣導(dǎo)模塊進(jìn)行參數(shù)解析,有協(xié)議?。?!

    求教!??!如何利用labview串口對慣導(dǎo)模塊進(jìn)行參數(shù)解析,有協(xié)議?。。?/div>
    發(fā)表于 03-17 19:59

    如何解析從串口接收到的字符串中提取的命令和數(shù)字參數(shù)?

    如何解析從串口接收到的字符串中提取命令和數(shù)字參數(shù)?
    發(fā)表于 11-22 11:56

    如何解析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

    請問如何解析從串口接收到的字符串中提取命令和數(shù)字參數(shù)?

    如何解析從串口接收到的字符串中提取命令和數(shù)字參數(shù)?
    發(fā)表于 10-23 06:13

    電感儲能型脈沖電源系統(tǒng)的半解析參數(shù)分析

    電感儲能型脈沖電源系統(tǒng)的半解析參數(shù)分析_丁健民
    發(fā)表于 01-04 16:45 ?0次下載

    Linux MTD下獲取Nand flash 各個(gè)參數(shù)的過程的詳細(xì)解析

    Linux MTD下獲取Nand flash 各個(gè)參數(shù)的過程的詳細(xì)解析
    發(fā)表于 10-30 08:38 ?7次下載
    Linux MTD下獲取Nand flash 各個(gè)<b class='flag-5'>參數(shù)</b>的過程的詳細(xì)<b class='flag-5'>解析</b>

    什么是高頻板?詳細(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 ?1169次閱讀

    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 ?1776次閱讀

    MXNet源碼解讀筆記一 ---- 如何解析參數(shù)文件

    本文主要內(nèi)容是解讀MXNet是加載模型參數(shù)文件并解析得到NDArray所涉及到的代碼,希望讀者讀完本文能對MXNet參數(shù)文件的格式有清晰的了解,...
    發(fā)表于 02-07 11:12 ?0次下載
    MXNet源碼解讀筆記一 ---- 如何<b class='flag-5'>解析</b><b class='flag-5'>參數(shù)</b>文件

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

    TI eSMO 庫Fsmopos和Gsmopos參數(shù)解析
    發(fā)表于 10-28 12:00 ?2次下載
    TI eSMO  庫Fsmopos和Gsmopos<b class='flag-5'>參數(shù)</b><b class='flag-5'>解析</b>

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

    MOSFET數(shù)據(jù)手冊常見參數(shù)解析——EASIGSS/Rds(on)/Coss
    的頭像 發(fā)表于 06-19 09:53 ?1306次閱讀
    MOSFET數(shù)據(jù)手冊常見<b class='flag-5'>參數(shù)</b><b class='flag-5'>解析</b>——EASIGSS/Rds(on)/Coss

    IGBT單管數(shù)據(jù)手冊參數(shù)解析(上)

    這篇文章是《英飛凌工業(yè)半導(dǎo)體》系列原創(chuàng)文章的第204篇,IGBT單管數(shù)據(jù)手冊參數(shù)解析(上)
    發(fā)表于 12-06 11:54 ?29次下載

    IGBT單管數(shù)據(jù)手冊參數(shù)解析(下)

    這篇文章是英飛凌工業(yè)半導(dǎo)體微信公眾號系列原創(chuàng)文章第205篇,IGBT單管數(shù)據(jù)手冊參數(shù)解析(下)
    發(fā)表于 12-06 11:56 ?23次下載