GESP等级认证C++三级10-操作字符数组2-2
4 字符数组的查找
通过strchr()函数在字符数组中查找指定字符,其格式如下所示。
char *strchr(const char *str, int character);
其中,第一个参数str表示要在其中进行查找的字符数组(字符指针),第二个参数character表示要查找的字符。如果找到字符,返回指向该字符在字符串中第一次出现位置的指针,如果未找到字符,返回空指针(NULL)。使用strchr()函数的代码如图6所示。
图6 使用strchr()函数的代码
其中,第9行代码使用strchr()函数在字符数组c_arr1中查找字符‘l’,c_p保存了第一次出现的指针,代码运行效果如图7所示。
图7 代码运行效果
5 求数组长度
通过strlen()函数获取数组长度。其格式如下所示。
size_t strlen(const char *str);
其中,参数是要获取长度的字符数组(字符指针),必须以空字符 \0 结尾。返回 size_t 类型的值,表示字符串中 \0 字符之前的字符个数。使用strlen()的代码如图8所示。
图8 使用strlen()函数的代码
其中,第8行代码使用strlen()函数获取字符数组c_arr1的长度,其实得到的是数组c_arr1中字符的个数,以上程序运行的效果如图9所示。
图9 程序运行效果
虽然数组c_arr1的长度是20,strlen()函数获取到的是数组中非空字符的数量。可以通过图10所示代码获取数组实际长度。
图10 获取数组实际长度的代码
其中,第8行代码通过sizeof()获取数组的实际长度,代码运行效果如图11所示。
图11 代码运行效果
6 真题解析
2021年12月选择题,如图12所示。
图12 2021年12月选择题
根据“5 求数组长度”中提到的,strlen()函数获取到的是数组中非空字符的数量,而数组ch中包含10个字符和1个空格(空格不是非空字符),共11个字符,也就是说,ret的值是11,但是本题问的是ch占用的内存空间,所以应该加上结尾字符,即11+1=12,选D。