38-c语言字符串追加
本文最后更新于 2026-03-05,文章内容可能已经过时。
C语言字符串追加需使用
strcat函数,但必须确保目标缓冲区空间足够容纳追加后的总长度且字符串以\0结尾,避免自我追加(如strcat(arr, arr))导致死循环;为防止缓冲区溢出,安全实践推荐使用strncat并指定最大追加长度,这是正确操作字符串的核心原则。
在C语言中,字符串追加是常见的操作,主要使用strcat函数实现。
1. strcat函数基本用法
strcat函数用于将一个字符串追加到另一个字符串的末尾。
函数原型
char *strcat(char *dest, const char *src);
参数说明
dest: 目标字符串指针,必须有足够的空间容纳追加后的字符串src: 源字符串指针,将被追加到目标字符串末尾
返回值
返回指向目标字符串dest的指针
示例代码
#include <stdio.h>
#include <string.h>
int main() {
char dest[20] = "Hello";
char src[10] = " World";
strcat(dest, src);
printf("%s\n", dest); // 输出: Hello World
return 0;
}
2. 使用注意事项
重要规则
- 目标空间必须足够大:目标数组必须能容纳源字符串追加后的总长度
- 字符串必须以
\0结尾:目标字符串和源字符串都必须以\0结尾 - 目标空间必须可修改:不能是字符串常量(如
char *p = "abc";) - 不能自我追加:
strcat(arr, arr);会导致死循环(覆盖\0)
常见错误示例
// 错误1:目标空间不足
char dest[5] = "Hi";
char src[] = "Hello";
strcat(dest, src); // 缓冲区溢出
// 错误2:源字符串未以'\0'结尾
char dest[20] = "Hello ";
char src[] = {'W', 'o', 'r', 'l', 'd'}; // 无'\0'
strcat(dest, src); // 会追加随机字符
// 错误3:自我追加
char arr[20] = "abc";
strcat(arr, arr); // 死循环
3. strcat的模拟实现
#include <stdio.h>
#include <assert.h>
char *my_strcat(char *dest, const char *src) {
char *ret = dest;
assert(dest && src); // 确保指针不为空
// 找到目标字符串的末尾
while (*dest) {
dest++;
}
// 将源字符串追加到目标字符串末尾
while (*dest++ = *src++) {
// 空循环,仅用于复制字符
}
return ret;
}
4. 安全替代方案:strncat
为避免缓冲区溢出,C语言提供了strncat函数,它允许指定追加的字符数量:
char *strncat(char *dest, const char *src, size_t n);
使用示例
#include <stdio.h>
#include <string.h>
int main() {
char dest[20] = "Hello";
char src[10] = " World";
strncat(dest, src, 5); // 仅追加5个字符
printf("%s\n", dest); // 输出: Hello Wor
return 0;
}
5. 手动实现字符串追加
如果不使用标准库函数,可以手动实现字符串追加:
#include <stdio.h>
int main() {
char arr1[] = "hello";
char arr2[] = "world";
char arrbuf[100] = {0}; // 全部初始化为'\0'
int index = 0;
// 复制arr1到arrbuf
while (arr1[index] != '\0') {
arrbuf[index] = arr1[index];
index++;
}
// 追加arr2
int len = sizeof(arr1) - 1; // 减1是因为包含'\0'
while (arr2[index - len] != '\0') {
arrbuf[index] = arr2[index - len];
index++;
}
// 添加字符串结束符
arrbuf[index] = '\0';
printf("%s\n", arrbuf); // 输出: helloworld
return 0;
}
6. 总结
strcat是C语言中字符串追加的标准函数- 使用时必须确保目标空间足够大且以
\0结尾 - 避免自我追加,防止死循环
- 为安全起见,推荐使用
strncat控制追加长度 - 理解字符串存储原理(以
\0结尾)对正确使用字符串操作函数至关重要
正确使用字符串追加函数能有效避免缓冲区溢出等安全问题,是C语言编程中的重要基础技能。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 软件从业者Hort
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

