一、函数概述
strcat函数是C/C++标准函数库中的一个字符串函数,用于将两个字符串拼接在一起。被拼接的字符串被称为目标字符串,需要在调用strcat函数之前已经预先分配好内存,而要拼接到目标字符串上的字符串称为源字符串。
二、函数原型
char * strcat(char *dest, const char *src);
其中,第一个参数dest表示目标字符串地址,第二个参数src表示源字符串地址。函数返回目标字符串地址。
三、函数实现
strcat函数实现其实非常简单,可以分为以下三个步骤:
1. 指针移动到目标字符串末尾
由于目标字符串的长度已知,因此可以通过指针移动的方式来找到其末尾。例如:
char dest[20] = "Hello, "; char *p = dest; while(*p != '\0') { ++p; }
上面的代码中,dest数组为目标字符串,p指针被初始化为dest的地址。通过while循环找到字符串末尾处,即p指向了字符串最后一个字符之后的位置(这个位置存储的是'\0',表示字符串的结束)。
2. 将源字符串拷贝到目标字符串末尾
找到了目标字符串的末尾之后,就可以将源字符串拷贝到目标字符串的末尾了。可通过指针移动来实现,例如:
const char src[] = "world!"; char *q = (char *)src; while(*q != '\0') { *p++ = *q++; }
上面的代码中,src数组为源字符串,q指针被初始化为src的地址。while循环中,一次将src中的每个字符拷贝到dest中,并最终使得p指向目标字符串的末尾。
3. 目标字符串添加结束符
C/C++中的字符串以'\0'结尾,因此最后需要手动在目标字符串的末尾添加一个结束符。例如:
*p = '\0';
上面的代码中,由于p指针指向了目标字符串的末尾,因此直接将'\0'存储在p指向的位置即可。
四、完整代码示例
#include#include using namespace std; int main() { char dest[20] = "Hello, "; const char src[] = "world!"; strcat(dest, src); cout << dest << endl; return 0; }
运行结果为:
Hello, world!
五、总结
strcat函数是C/C++标准函数库中的一个字符串函数,用于将两个字符串拼接在一起。其原理非常简单,只要依次将源字符串中的每个字符拷贝到目标字符串的末尾即可。当然,为了避免越界或者其它不可预知的错误,需要注意提前预分配好目标字符串的内存,并且确保源字符串是以'\0'结尾的。