一、strcat () 函数介绍
strcat()(string concatenation,字符串拼接)是 C 语言标准库<string.h>中的函数,用于将一个字符串追加(拼接)到另一个字符串的末尾,覆盖目标字符串原有的结束符'\0',并在拼接后的新字符串末尾添加'\0'。
1. 函数原型
char *strcat(char *dest, const char *src);
- 参数:
dest:目标字符串(存放拼接后的结果),必须是可修改的字符数组(不能是字符串常量),且空间足够容纳原dest+src的内容。src:源字符串(被拼接的字符串),用const修饰表示不修改源字符串。
- 返回值:返回指向目标字符串
dest的指针(便于链式调用)。
2. 核心原理
strcat()会先找到dest的末尾(即第一个'\0'的位置),然后从该位置开始,将src的字符逐个复制到dest中,直到src的结束符'\0'(该'\0'也会被复制)。
二、使用示例
1. 基础用法
#include <stdio.h> #include <string.h> int main() { // 目标数组需预留足够空间(原内容+拼接内容+'\0') char dest[50] = "Hello, "; // 原内容:"Hello, "(长度7) const char *src = "World!"; // 源字符串:"World!"(长度6) // 拼接src到dest末尾 strcat(dest, src); // 输出结果:Hello, World! printf("拼接后的字符串:%s\n", dest); // 输出dest的地址(与返回值一致) printf("strcat返回值:%s\n", strcat(dest, " Goodbye!")); return 0; }
输出结果:
拼接后的字符串:Hello, World! strcat返回值:Hello, World! Goodbye!
2. 错误示例(需避免)
#include <stdio.h> #include <string.h> int main() { // 错误1:目标是字符串常量(不可修改,会触发段错误) // char *dest = "Hello, "; // strcat(dest, "World!"); // 错误2:目标数组空间不足(会导致缓冲区溢出,未定义行为) char dest[10] = "Hello, "; // 空间仅10字节,拼接后超出 strcat(dest, "World!"); // 危险:内存越界 return 0; }
三、总结
strcat()用于字符串拼接,需保证目标数组可修改且空间足够。strcat()不做边界检查,存在安全风险,优先使用strncat()。- 拼接的核心是覆盖目标字符串的
'\0',并在末尾添加新的'\0'。