arduino必须包含的两个函数_Arduino字符串
字符串⽤于存储⽂本。它们可⽤在LCD或Arduino IDE串⼝监视器窗⼝中显⽰⽂本。字符串也可⽤于存储⽤户输⼊。例如,⽤户在连接到
Arduino的键盘上键⼊的字符。
在Arduino编程中有两种类型的字符串:
字符数组,与C编程中使⽤的字符串相同。
Arduino字符串,它允许我们在草图中使⽤字符串对象。
在本章中,我们将学习Arduino草图中的字符串,对象和字符串的使⽤。在本章末尾,你将学习在草图中使⽤哪种类型的字符串。
字符串字符数组
我们要学习的第⼀种类型的字符串是 char 类型的⼀系列字符。在前⾯的章节中,我们学习了⼀个数组是什么:存储器中存储的相同类型的
变量的连续序列。⼀个字符串是⼀个char变量的数组。
字符串是⼀个特殊的数组,在字符串的末尾有⼀个额外的元素,其值总是为0(零)。这被称为“空终⽌字符串”。
字符串字符数组⽰例
此⽰例将显⽰如何创建字符串并将其打印到串⼝监视器窗⼝。
例
void setup() { char my_str[6]; // an array big enough for a 5 character string Serial.begin(9600); my_str[0] = 'H'; // the string consists of 5 characters my_str[1
以下⽰例显⽰了字符串由什么组成。⼀个具有可打印字符的字符数组和0作为数组的最后⼀个元素,表⽰这是字符串结束的位置。通过使
⽤ Serial.println()并传递字符串的名称,可以将字符串打印到Arduino IDE串⼝监视器窗⼝。
同样的例⼦可以⽤更⽅便的⽅式编写,如下所⽰:
⽰例
void setup() { char my_str[] = "Hello"; Serial.begin(9600); Serial.println(my_str);}void loop() {}
在这个草图中,编译器计算字符串数组的⼤⼩,并⾃动使⽤空值0终⽌字符串。⼀个长度为六个元素长,由五个字符后跟⼀个零组成的数
组,其创建⽅式与上⼀个草图完全相同。
操作字符串数组
我们可以在草图中更改字符串数组,如下图所⽰。
例⼦
void setup() { char like[] = "I like coffee and cake"; // create a string Serial.begin(9600); // (1) print the string Serial.println(like); // (2) delete part of the string 结果
I like coffee and cake
I like coffee
I like coffee and tea
以上草图按以下⽅式⼯作。
(1)创建和打印字符串
在上⾯给出的草图中,创建了⼀个新的字符串,然后打印出来显⽰在串⼝监视器窗⼝中。
(2)缩短字符串
通过⽤空终⽌0替换字符串中的第14个字符来缩短字符串。这是从0开始计算的字符串数组中的13号元素。
打印字符串时,所有字符都打印到新的空终⽌0。其他字符不消失;它们仍然存在于内存中,并且字符串数组仍然是相同的⼤⼩。唯⼀的区
别是任何使⽤字符串的函数只能看到第⼀个空终⽌符前的字符串。
(3)更改字符串中的单词
最后,草图⽤“tea”代替“cake”⼀词。它⾸先必须⽤空格替换空终⽌符,如[13],以便将字符串恢复为原
来的格式。
新字符⽤单词“tea”覆盖单词“cake”的“cak”。这是通过覆盖单个字符来完成的。“cake”的“e”被替换为新的空终⽌字符。结果是
字符串实际上终⽌于两个空字符,即字符串末尾的原始字符,以及替换“cake”中的“e”的新字符。这在打印新字符串时没有区别,因为
打印字符串的函数在遇到第⼀个空终⽌字符时将停⽌打印字符串字符。
操作字符串数组的函数
上⼀个草图通过访问字符串中的单个字符,以⼿动⽅式操作字符串。为了更⽅便操作字符串数组,你可以编写⾃⼰的函数来执⾏,也可以使
⽤ C 语⾔库中的⼀些字符串函数。
下⾯显⽰了操作字符串数组的列表函数。
下⼀个草图使⽤了⼀些C字符串函数。
例⼦
void setup() { char str[] = "This is my string"; // create a string char out_str[40]; // output from string functions placed here int num; // general purpose integer 结果
This is my string
String length is: 17
Size of the array: 18
This is my string
This is my string sketch.
String length is: 25
Size of the array out_str[]: 40
以上草图按以下⽅式⼯作。
(1)打印字符串
最新创建的字符串将打印到串⼝监视器窗⼝,如之前的草图所完成的。
(2)获取字符串的长度
strlen()函数⽤于获取字符串的长度。字符串的长度仅对于可打印字符,不包括空终⽌符。
该字符串包含17个字符,因此我们在串⼝监视器窗⼝中看到17个字符。
(3)获取数组的长度
c语言如何创建字符串数组运算符sizeof()⽤于获取包含字符串的数组的长度。长度包括空终⽌符,因此长度⽐字符串的长度多1。
sizeof()看起来像⼀个函数,但技术上是⼀个运算符。它不是C字符串库的⼀部分,但在草图中⽤于显⽰数组⼤⼩和字符串⼤⼩(或字符串长
度)之间的差异。
(4)复制字符串
strcpy()函数⽤于将str[]字符串复制到out_num[]数组。strcpy()函数将传递给它的第⼆个字符串复制到
第⼀个字符串中。现在,字符串的副本存在于out_num[]数组中,但只占⽤了数组的18个元素,因此在数组中仍然有22个空闲的char元素。这些空闲元素在内存中的字符串的后⾯可以到。
将字符串复制到数组中,以便我们在数组中有⼀些额外的空间⽤于草图的下⼀部分,即在字符串的末尾添加⼀个字符串。
(5)将字符串附加到字符串(连接)
草图将⼀个字符串加到另⼀个字符串,这称为串联。这是使⽤strcat()函数完成的。strcat()函数将传递给它的第⼆个字符串放到传递给它的第⼀个字符串的末尾。
串联后,打印字符串的长度以显⽰新的字符串长度。然后打印数组的长度,以显⽰在40个元素长的数组中有⼀个25个字符长度的字符串。
请记住,25个字符长度的字符串实际上占⽤了数组的26个字符,因为还有空终⽌0。
数组边界
使⽤字符串和数组时,在字符串或数组的边界内⼯作是⾮常重要的。在⽰例草图中,创建了⼀个长度为40个字符的数组,以分配可⽤于操作字符串的内存。
如果数组太⼩,⽽我们尝试复制⽐数组⼤的字符串,那么字符串将复制到超出数组的末尾。超出数组末尾的内存可能包含草图中使⽤的其他重要数据,然⽽它们将被字符串覆盖。如果超出字符串末尾的内存超出范围,则可能会导致草图崩溃或导致意外⾏为。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论