国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

解析基于C語言的指令

2020-02-24 14:34:39
字體:
供稿:網(wǎng)友

為了方便各位小伙伴們更好的學(xué)習(xí)C語言,今天武林技術(shù)頻道的小編專門為大家整理了一些資料,供大家交流學(xué)習(xí),下面就跟隨武林技術(shù)頻道的編輯一起來看看解析基于C語言的指令吧。

這雖然只是指令解析的一部分,但這是最核心部分。完整指令為:AT+REG[admin][2][00:0C:29:AA:0B:A7]。
/****************************************************************
?**文件:GetParameters.c
?**簡要描述:指令解析
?**注:1.這種情況下“AT+ABC[ha12ha[1122]”--即中間少了一個(gè)], 則解析的結(jié)果為ha12ha[1122。
??????? 2.默認(rèn)參數(shù)的大小不超過20字節(jié)
??????? 3.最多解析三個(gè)參數(shù)。
??????? 4.指令結(jié)尾必須為空即'/0'或'/n'。
?***************************************************************/
?

復(fù)制代碼 代碼如下:

#include
#include
//保存參數(shù)的結(jié)構(gòu)體
typedef struct parameters
{
?char str1[20];? //第一個(gè)參數(shù)
?char str2[20];? //第二個(gè)參數(shù)
?char str3[20];? //第三個(gè)參數(shù)
}parameters_t;

?
/***** 獲取參數(shù) **********************************************/
//返回值為獲取參數(shù)的個(gè)數(shù),-1表示指令錯(cuò)誤
int Getparams(char* data, parameters_t* pparam)

{
?int len = 0;
?memset(pparam, 0, sizeof(parameters_t));

?//第一個(gè)參數(shù)
?{
? //如果為空或換行,則說明沒有參數(shù)
? if( 0 == *data || '/n' == *data)
? {
?? _ERROR("no parameter!");
?? return 0;
? }
? //如果為'['字符,則說明后面還有參數(shù)
? if( strncmp(data, "[", 1) )
? {
?? _ERROR("first parameter err:? can't find '['");
?? return -1;
? }
? data += 1;
? //如果'['后有']'結(jié)束字符,則說明參數(shù)有效
? if( !strstr(data, "]") )
? {
?? _ERROR("first parameter err:? can't find ']'");
?? return -1;
? }
? //得到第一個(gè)參數(shù)的長度
? len = strstr(data, "]") - data;
? if(20 <= len)
? {
?? _ERROR("param one is too long!");
?? return -1;
? }
? //得到第一個(gè)參數(shù)
? strncpy(pparam->str1, data, len);
? //printf("str1 : %s/n", pparam->str1);
?}

?//第二個(gè)參數(shù)
?{
? data += (len + 1);
? //如果為空,則說明只有一個(gè)參數(shù)
? if( 0 == *data || '/n' == *data)
? {
?? //printf("only one parameter!/n");
?? return 1;
? }
? //如果為'['字符,則說明后面還有參數(shù)
? if( strncmp(data, "[", 1) )
? {
?? _ERROR("second parameter err:? can't find '['");
?? return -1;
? }
? data += 1;
? //如果'['后有']'結(jié)束字符,則說明參數(shù)有效
? if( !strstr(data, "]") )
? {
?? _ERROR("second parameter err:? can't find ']'");
?? return -1;
? }
? len = strstr(data, "]") - data;
? if(20 <= len)
? {
?? _ERROR("param two is too long!");
?? return -1;
? }?
? //得到第二個(gè)參數(shù)
? strncpy(pparam->str2, data, len);
? //printf("str2 : %s/n", pparam->str2);
?}

?//第三個(gè)參數(shù)
?{
? data += (len + 1);
? if( 0 == *data || '/n' == *data)
? {
?? //printf("only two parameter!/n");
?? return 2;
? }
? if( strncmp(data, "[", 1) )
? {
?? _ERROR("third parameter err:? can't find '['");
?? return -1;
? }
? data += 1;
? if( !strstr(data, "]") )
? {
?? _ERROR("third parameter err:? can't find ']'");
?? return -1;
? }
? len = strstr(data, "]") - data;
? if(20 <= len)
? {
?? _ERROR("param three is too long!");
?? return -1;
? }?
? strncpy(pparam->str3, data, len);
? //printf("str3 : %s/n", pparam->str3);
?}

?data += (len + 1);
?if( 0 != *data && '/n' != *data)
?{
? _ERROR("too much parameter!");
? return -1;
?}?

?return 3;
}
?


這就是指令(字符串)解析,目的是獲取參數(shù).。更多精彩內(nèi)容,盡在https://js.Vevb.com。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 阜平县| 茶陵县| 会东县| 广丰县| 石楼县| 永靖县| 南宫市| 花莲市| 资兴市| 赫章县| 武鸣县| 明水县| 海淀区| 长春市| 若尔盖县| 玉山县| 灌阳县| 河北区| 泽州县| 达日县| 灵丘县| 惠州市| 大英县| 广饶县| 汶川县| 隆安县| 平定县| 太仓市| 乌什县| 荃湾区| 伊川县| 平定县| 海城市| 离岛区| 尖扎县| 新乡市| 上杭县| 齐齐哈尔市| 寻乌县| 崇左市| 广西|