char 数组未返回正确的大小

char array not returning correct size

  Serial.begin(57600);
  char testArray6[6] = {'1', '2', '3', '4', '5', '6'};
  Serial.println(testArray6);
  Serial.println(strlen(testArray6));
  char testArray5[5] = {'0', '0', '0', '0', '0'};
  Serial.println(strlen(testArray5));
  char testArray4[4] = {'0', '0', '0', '0'};
  Serial.println(strlen(testArray4));
  char testArray3[3] = {'0', '0', '0'};
  Serial.println(strlen(testArray3));
  char testArray2[2] = {'0', '0'};
  Serial.println(strlen(testArray2));
}
12345600000000000000
20
14
9
5
2

我不确定我初始化 char 数组的方式是否有问题,或者我是否错误地使用了 strlen 函数。

C 中的字符串是 空终止 字符序列,因此传递给 strlen() 的必须是指向 空终止[=] 的指针18=] 字符序列。

向数组添加终止空字符以修复:

  Serial.begin(57600);
  char testArray6[7] = {'1', '2', '3', '4', '5', '6', '[=10=]'};
  Serial.println(testArray6);
  Serial.println(strlen(testArray6));
  char testArray5[6] = {'0', '0', '0', '0', '0', '[=10=]'};
  Serial.println(strlen(testArray5));
  char testArray4[5] = {'0', '0', '0', '0', '[=10=]'};
  Serial.println(strlen(testArray4));
  char testArray3[4] = {'0', '0', '0', '[=10=]'};
  Serial.println(strlen(testArray3));
  char testArray2[3] = {'0', '0', '[=10=]'};
  Serial.println(strlen(testArray2));
}

C 中,字符串必须以 [=12=] 结尾。

a[5] = {'1', '2', '3', '4', '[=10=]'};