我写了个数组拼接函数,为什么得到的为什么不是预期的值-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3827|回复: 3

我写了个数组拼接函数,为什么得到的为什么不是预期的值

[复制链接]
发表于 2016-3-5 13:14 | 显示全部楼层 |阅读模式
我代码如下:
unsigned char DianYa[5]={0xB5,0xE7,0xD1,0xB9,0x3A};
unsigned char DianYaZhi[4]={0x32,0x2E,0x35,0x38};

void setup() {
  pinMode(13,OUTPUT);
  Serial.begin(9600);
}

void loop() {
  unsigned char temp[sizeof(DianYa)+sizeof(DianYaZhi)];
  PinJieZhiFuChuan(DianYa,DianYaZhi,temp);
  digitalWrite(13,HIGH);
  Serial.write(temp,sizeof(temp));
  digitalWrite(13,LOW);
  delay(1000);
}

  //拼接数组
  void PinJieZhiFuChuan(unsigned char c1[],unsigned char c2[],unsigned char csum[])
  {
    int a=sizeof(c1);
    int b=sizeof(c2);
    int c=a+b;
    int i;
    for(i=0;i<c;i++)
    {
      if(i<a)
      {
        csum=c1;
      }
      else
      {
        csum=c2[i-b];
      }
    }
    return;
  }




预期串口打印出来的结果应该是:B5 E7 D1 B9 3A 32 2E 35 38
但串口打印出来的16进制结果为什么是:B5 E7 32 2E 00 B8 00 00 00
 楼主| 发表于 2016-3-5 14:31 | 显示全部楼层
问题到底出在哪儿呢?
发表于 2016-3-5 16:39 | 显示全部楼层
问题在 sizeof 上。你可以用  print 打印出来看看这个值是不是你想要的。
[mw_shl_code=cpp,true]   unsigned char temp[sizeof(DianYa)+sizeof(DianYaZhi)];

   int a=sizeof(c1);
   int b=sizeof(c2);[/mw_shl_code]
 楼主| 发表于 2016-3-6 18:10 | 显示全部楼层
将代码修改如下,解决问题:
unsigned char DianYa[5]={0xB5,0xE7,0xD1,0xB9,0x3A};
unsigned char DianYaZhi[4]={0x32,0x2E,0x35,0x38};

void setup() {
  pinMode(13,OUTPUT);
  Serial.begin(9600);
}

void loop() {
  unsigned char temp[sizeof(DianYa)+sizeof(DianYaZhi)];
  PinJieZhiFuChuan(DianYa,sizeof(DianYa),DianYaZhi,sizeof(DianYaZhi),temp);
  digitalWrite(13,HIGH);
  Serial.write(temp,sizeof(temp));
  digitalWrite(13,LOW);
  delay(1000);
}

  //拼接数组
  void PinJieZhiFuChuan(unsigned char c1[],int a,unsigned char c2[],int b,unsigned char csum[])
  {
    a=sizeof(c1);
    b=sizeof(c2);
    int c=a+b;
    int i;
    for(i=0;i<c;i++)
    {
      if(i<a)
      {
        csum[i]=c1[i];
      }
      else
      {
        csum[i]=c2[i-a];
      }
    }
    return;
  }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 03:31 , Processed in 0.091416 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表