问题
您想了解如何使用原始字符字符串:创建字符串、查找其长度以及比较、复制或附加字符串。核心 C 语言不支持 Arduino 样式的 String 功能,因此您想了解针对基本字符数组编写的其他平台的代码。
解决方案
字符数组有时被称为字符字符串(或简称为字符串)。第 2.4 节介绍了一般的 Arduino 数组。本节介绍操作字符字符串的函数。如果您已经进行过 C 或 C++ 编程,可能习惯于在代码中添加 #include <string.h> 以便访问这些函数。Arduino IDE 在幕后为您完成此操作,因此您不需要 #include。
您可以像这样声明字符串:
char stringA[8]; // 声明长度最多为 7 个字符加上终止空字符的字符串
char stringB[8] = "Arduino"; // 与上述相同,并将字符串初始化为 "Arduino"
char stringC[16] = "Arduino"; // 与上述相同,但字符串有空间可以增长
char stringD[ ] = "Arduino"; // 编译器初始化字符串并计算大小
使用 strlen(表示字符串长度的缩写)确定终止空字符之前的字符数:
int length = strlen(string); // 返回字符串中的字符数
对于在前面的代码中显示的字符串,length 将为 0(对于 stringA)和 7(对于其他字符串)。
strlen 不计算指示字符串结尾的空字符。
使用 strcpy(表示字符串复制的缩写)将一个字符串复制到另一个字符串:
strcpy(destination, source); // 将字符串 source 复制到 destination
使用 strncpy(与 strcpy 类似,但带有限制)限制要复制的字符数(有助于防止写入超过目标字符串容量的字符)。您可以在第 2.7 节中看到这个用法:
// 将 source 中最多的 6 个字符复制到 destination 中
strncpy(destination, source, 6);
使用 strcat(表示字符串连接的缩写)将一个字符串附加到另一个字符串的末尾:
// 将源字符串附加到目标字符串的末尾
strcat(destination, source);
在复制或连接字符串时,始终确保目标字符串有足够的空间。不要忘记为终止空字符留出空间。
使用 strcmp(表示字符串比较的缩写)比较两个字符串。您可以在第 2.7 节中看到这个用法:
if(strcmp(str, "Arduino") == 0)
{
// 如果变量 str 等于 "Arduino",则执行某些操作
}
讨论
在 Arduino 环境中,文本使用称为字符串的字符数组表示。字符串由一些字符和一个空字符(值为 0)组成。空字符不会被显示,但是需要用它来向软件指示字符串的结尾。