当前位置:  编程技术>c/c++/嵌入式

基于C语言指令的深入分析

    来源: 互联网  发布时间:2014-10-15

    本文导语:  这虽然只是指令解析的一部分,但这是最核心部分。完整指令为:AT+REG[admin][2][00:0C:29:AA:0B:A7]。/**************************************************************** **文件:GetParameters.c **简要描述:指令解析 **注:1.这种情况下“AT+ABC[ha12ha[1122]”--...

这虽然只是指令解析的一部分,但这是最核心部分。完整指令为:AT+REG[admin][2][00:0C:29:AA:0B:A7]。
/****************************************************************
 **文件:GetParameters.c
 **简要描述:指令解析
 **注:1.这种情况下“AT+ABC[ha12ha[1122]”--即中间少了一个], 则解析的结果为ha12ha[1122。
        2.默认参数的大小不超过20字节
        3.最多解析三个参数。
        4.指令结尾必须为空即''或'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 str1, data, len);
  //printf("str1 : %sn", 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 str2, data, len);
  //printf("str2 : %sn", 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 str3, data, len);
  //printf("str3 : %sn", pparam->str3);
 }

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

 return 3;
}
 

这就是指令(字符串)解析,目的是获取参数.

    
 
 

您可能感兴趣的文章:

  • thttpd服务器,执行shell和c语言cgi成功,执行ssi指令不成功
  • 基于C语言实现shell指令的详解
  • 深入理解:Java是类型安全的语言,而C++是非类型安全的语言
  • 深入解析C语言中常数的数据类型
  • 深入c语言continue和break的区别详解
  • C语言typedef与复杂函数声明问题的深入解析
  • 深入C语言把文件读入字符串以及将字符串写入文件的解决方法
  • 利用C语言实践OOP,以及new,delete的深入分析
  • 深入理解C语言的逻辑控制
  • 基于C语言中野指针的深入解析
  • Android笔记之:深入为从右向左语言定义复杂字串的详解
  • 深入理解C语言 static、extern与指针函数
  • 深入理解c语言数组
  • 深入C语言内存区域分配(进程的各个段)详解
  • 深入解析C语言中typedef的四个用途
  • C语言中的BYTE和char深入解析
  • 深入分析C语言中结构体指针的定义与引用详解
  • 深入理解C语言中编译相关的常见错误
  • C语言指针的长度和类型深入分析
  • C语言关键字auto与register的深入理解
  • 深入分析Linux下如何对C语言进行编程
  • 深入探讨C语言中局部变量与全局变量在内存中的存放位置
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Lex/YACC 高手请进,求分析C语言语法例子
  • C语言分析系统日志
  • IT科技资讯 iis7站长之家
  • 文本语言分析工具 Verbiste
  • c/c++语言位域注意事项分析
  • C语言中自动隐式转换与类型强制转换实例分析
  • C语言new操作的安全性分析
  • 解析c语言中"函数调用中缺少哨兵"的情况分析
  • C语言中char*和char[]用法区别分析
  • C语言创建链表错误之通过指针参数申请动态内存实例分析
  • C语言的递归思想实例分析
  • C语言二叉树的非递归遍历实例分析
  • 为什么要学习C语言 C语言优势分析
  • 对C语言中sizeof细节的三点分析介绍
  • C语言宏定义使用分析
  • 关于C语言函数strstr()的分析以及实现
  • c病毒程序原理分析(防范病毒 c语言小病毒示例)
  • c语言中static的用法详细示例分析
  • c语言:基于函数指针的两个示例分析
  • C语言函数的递归和调用实例分析
  • 2013年7月和2013年8月编程语言排行榜
  • 如何在GTK2.0下实现国际化(语言选择根据自己设置的语言,不用系统的语言)
  • 2017 年热门编程语言排行榜出炉,你的语言上榜没?
  • C语言中有指针,因此C语言可以创建链表,那么Java语言没有指针,那Java是否可以创建链表呢?
  • 苹果OS X和IOS下最新编程语言swift介绍
  • 求助,在linux下,c语言和汇编语言的接口是什么?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • C语言中间语言 CIL
  • PHP编程语言介绍及安装测试方法
  • 最近学JSP,苦于HTML语言和JAVA语言太差,请教推荐几本书,thanks.
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3