GESP等级认证C++三级10-操作字符数组2-1
字符数组的常用操作包括拷贝、连接、比较、查找以及求长度等操作。
1 字符数组的拷贝
通过strcpy()函数实现字符数组间的拷贝,其格式如下所示。
char *strcpy(char *destination, const char *source);
其中,strcpy()函数的第一个参数destination表示目标字符数组(字符指针),用于存放复制内容。这个数组必须足够大,以容纳源字符串(包括结尾的空字符 \0);第二个参数source表示要复制的字符数组(字符指针),其类型为const常量,表示该字符数组在函数内部不会被修改。该函数的返回值是是指向目标字符串 destination 的指针。使用strcpy()函数的代码如图1所示。
图1 使用strcpy()函数的代码
其中,第10行代码调用strcpy()函数将字符数组c_arr1中的内容拷贝到c_arr2中,c_p保存的是字符数组c_arr2的地址。以上代码运行的效果如图2所示。
图2 代码运行效果
注意1 c_arr2数组的长度要大于等于c_arr1数组的长度。
注意2 使用操作字符数组的函数时,需要包括头文件cstring或者string.h。
2 字符数组的连接
通过strcat()函数实现字符数组的连接,其格式如下所示。
char *strcat(char *destination, const char *source);
其中,strcat()函数的第一个参数表示目标字符数组(字符指针),该数组必须包含一个有效的C字符串(以\0结尾),并且必须有足够的空间来存储连接后的结果(包括结尾的\0);第二个参数表示要追加的源字符数组(字符指针),const 关键字表示该字符串在函数内部不会被修改。strcat()函数的返回值是指向目标数组 destination 的指针。也就是说,strcat()函数的作用是将source中的内容连接到destination的内容之后,并将连接后的内容保存在destination中。strcat()函数的相关代码如图3所示。
图3 使用strcat()函数的代码
其中,第10行代码使用strcat()函数将c_arr2数组的内容连接到c_arr1数组内容之后,c_p指向了连接后的内容,即c_arr1的内容。图3所示代码的运行效果如图4所示。
图4 代码运行效果
3 字符数组的比较
通过strcmp()函数实现字符数组的比较,该函数的格式如下所示。
int strcmp(const char *str1, const char *str2);
其中,参数str1和str2是要比较的两个字符数组(字符指针),两个参数都有 const 关键字,表示函数内部不会修改字符串内容。strcmp()函数返回一个整数值,表示比较结果,当str1<str2时,返回负值,当str1>str2时返回正值,当str1=str2时返回0。使用strcmp()函数的代码如图5所示。
图5 使用strcmp()函数的代码
其中,第9行代码通过strcmp()函数比较了数组c_arr1和c_arr2中的内容,因为c_arr1中的第一个字符’h’比c_arr2中的第一个字符’w’小,因此r的值是负数。