将byte *复制到char数组出错

时间:2017-09-08 08:04:24

标签: c++ arduino-esp8266

char数组的副本如何工作? 当我将字节数组复制到char数组时出错了。 我有以下代码:

void onIncomingMQTT_CMD(char* topic, byte* payload, unsigned int length) {
   char a[length];
   int i;
   String s = "";
   for(i=0; i<length; i++) {
      a[i] = (char)payload[i];
      s = s + (char)payload[i];
   }
   //message_buff[i] = '\0';
   logToMQTT(s + "[payload]");
   a[i] = '\0';
   logToMQTT(a);


   char b[length];
   int j;
   String d = "";
   for(j=0; j<length; j++) {
      b[j] = (char)payload[j];
      d = d + (char)payload[j];
   }
   //message_buff[j] = '\0';
   logToMQTT(d + "[payload2]");
   b[j] = '\0';
   logToMQTT(b);

我预计数组ab会相同。但是在日志输出中,我看到第一个[payload]是正确的。但第二个[payload2]是不同的。它显示了主题中的字符。

ON[payload]
we[payload]

byte数组到char数组的副本有什么问题?

0 个答案:

没有答案