Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1300247
  • 博文数量: 548
  • 博客积分: 7597
  • 博客等级: 少将
  • 技术积分: 4224
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-15 13:21
个人简介

嵌入式软件工程师&&太极拳

文章分类

全部博文(548)

文章存档

2014年(10)

2013年(76)

2012年(175)

2011年(287)

分类: 嵌入式

2012-05-11 15:58:56


点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <malloc.h>
  3. #include <string.h>

  4. void get_cmd(char **p);

  5. int split_string(char *s,char _cmd[][100]);

  6. void print_array(char _arr[][100],int _len);

  7. void change_array(unsigned char *rda, char _arr[][100], int _len);


  8. int main(void)
  9. {
  10.     char *s;
  11.     char (*cmd)[100];
  12.     int len;
  13.     unsigned char buf[256];

  14.     s = (char *)malloc(sizeof(char)*100);
  15.     cmd = (char (*)[])malloc(sizeof(s)*10);

  16.     /*注意不能用get_cmd(s),因为p存放的不是“s存放的地址”,而是
  17.      s本身的地址。详细查看“彻底搞定C指针”的第4篇。
  18.      */

  19.     printf("SEND: ");
  20.     get_cmd(&s);

  21.     len = split_string(s,cmd);

  22.     printf("HH: ");
  23.     print_array( cmd, len );

  24.     unsigned char *rda = buf;
  25.     change_array(rda, cmd, len );

  26. }

  27. /*可以用一个指针实现,这里只是演示指向指针的指针*/
  28. void get_cmd(char **p)
  29. {
  30.     fgets(*p, 100, stdin);
  31. }

  32. /*将带有空格的字符串s进行解析,存放到cmd字符数组中*/
  33. int split_string(char *s,char _cmd[][100])
  34. {
  35.     char *p = s;
  36.     int i = 0;
  37.     int j = 0;

  38.     while(*p != '\n')
  39.     {
  40.         if(*p == ' ')
  41.         {
  42.             _cmd[i][j]='\0';
  43.             i++;
  44.             j = 0;
  45.             p++;
  46.             /*处理多个空格的情况*/
  47.             while(*p == ' ')
  48.             {
  49.                 p++;
  50.             }
  51.         }
  52.         else
  53.         {
  54.             _cmd[i][j] = *p;
  55.             p++;
  56.             j++;
  57.         }
  58.     }

  59.     return i+1;
  60. }

  61. /*输出数组*/
  62. void print_array(char _arr[][100],int _len)
  63. {
  64.     int i = 0;

  65.     for(i = 0; i < _len ; i++)
  66.     {

  67.         printf("%s ",_arr[i]);
  68.     }

  69.     printf("\n");

  70. }


  71. void change_array(unsigned char *rda, char _arr[][100],int _len)
  72. {
  73.     int i = 0;
  74.     //unsigned char buf[256];
  75.     int nvalue = 0;

  76.     for(i = 0; i < _len ; i++)
  77.     {

  78.         sscanf( _arr[i], "%x", &nvalue);

  79.         *(rda + i) = *((unsigned char*)(&nvalue));
  80.         printf("%02X ", *(rda + i));

  81.     }
  82.     printf("\n");
  83. }

阅读(1077) | 评论(0) | 转发(0) |
0

上一篇:w90x900驱动

下一篇:串口发送十六进制数字

给主人留下些什么吧!~~