聊一聊年轻的编程语言Golang与Rust
2026/4/27 20:26:22
strcat()(string concatenation,字符串拼接)是 C 语言标准库<string.h>中的函数,用于将一个字符串追加(拼接)到另一个字符串的末尾,覆盖目标字符串原有的结束符'\0',并在拼接后的新字符串末尾添加'\0'。
char *strcat(char *dest, const char *src);
dest:目标字符串(存放拼接后的结果),必须是可修改的字符数组(不能是字符串常量),且空间足够容纳原dest+src的内容。src:源字符串(被拼接的字符串),用const修饰表示不修改源字符串。dest的指针(便于链式调用)。strcat()会先找到dest的末尾(即第一个'\0'的位置),然后从该位置开始,将src的字符逐个复制到dest中,直到src的结束符'\0'(该'\0'也会被复制)。
#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!
#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'。