错误,字符数组显示 11 个字符而不是 12 个

Error, Char Array showing 11 chars not 12

我在arduino上写了一个程序,将字符串中的12个字符存储到char数组中,但似乎只复制了11个。这是代码:

const int NUMBER_OF_TAGS = 8;
const int TYPE_MASTER = 0;
typedef struct
{
    char TAG[12];
    byte TagType;
} stTAGdef;

stTAGdef Libary[NUMBER_OF_TAGS + 2] ; //(0 to 9)

void setup()
{
    AddTag("4D0055754A27", 0, TYPE_MASTER);
    Serial.begin(9600);
}

void loop()
{
        int i=0;
        String sDisplay(Libary[i].TAG);
        /*Here it only prints 11 chars not 12*/
        Serial.print(Libary[i].TAG);
        while (1){}
}
void AddTag(String TAG, int Location, int tt)
{
    TAG.toCharArray(Libary[Location].TAG, 12);
    Libary[Location].TagType = (byte)tt;
}

在线版:https://codebender.cc/sketch:97071

您应该记住,基于字符数组的字符串以 null 结尾(因此它们的最后一个字符是 '\0'。

我想 Arduino 已经知道了,所以它会填充缓冲区,直到他有 space,然后停止转换。

你应该怎么办?这很简单:使用 12+1 字节缓冲区。

或者,如果您被迫拥有一个 12 字节的缓冲区,请不要使用 toCharArray 函数,而是一个一个地复制它。