a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

解析基于C語言的指令

2020-02-24 14:34:39
字體:
來源:轉載
供稿:網友

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

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

復制代碼 代碼如下:

#include
#include
//保存參數的結構體
typedef struct parameters
{
?char str1[20];? //第一個參數
?char str2[20];? //第二個參數
?char str3[20];? //第三個參數
}parameters_t;

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

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

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

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

?//第三個參數
?{
? 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;
}
?


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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 国产精品一区二区三 | 国产艳妇av视国产精选av一区 | 色婷婷综合久久久久中文一区二 | 国产精品欧美日韩 | 亚洲九九 | 亚洲一区在线日韩在线深爱 | 成人欧美一区二区三区在线播放 | 久久久久久av | 99这里只有精品视频 | 欧美区国产区 | 天天添 | 国产精品美女视频 | 日韩一区二区三区在线视频 | 国产成人一区二区三区 | av片网站 | av播放在线| 国产成人精品一区二 | 在线看h| 一级毛片视频播放 | 一区二区三区视频在线免费观看 | 欧美日b | 亚洲精品中文视频 | 国产精品久久久久久久久久 | 婷婷色国产偷v国产偷v小说 | 精品国产一区二区在线 | 黄影院| 亚洲视频在线看 | 亚洲tv国产 | 天天综合视频 | 久久精品国产一区二区电影 | 日韩av不卡在线播放 | 国产精品 日韩 | a天堂在线观看 | 久久精彩视频 | www.欧美 | 国产三区精品 | 精品亚洲一区二区三区 | 日韩精品一区二 | 99精品亚洲国产精品久久不卡 | 81精品国产乱码久久久久久 | 国产成人久久精品一区二区三区 |