c语言字符串拼接函数三个字符串
时间: 2024-10-08 15:01:27 浏览: 46
C语言实现字符串拼接和拷贝
在C语言中,将三个字符串拼接在一起通常可以使用`strcat()`函数配合临时字符数组或者直接动态内存分配来实现。以下是两种常见的方法:
1. **使用临时字符数组**:
```c
char str1[50], str2[50], str3[50], result[150]; // 假设每个字符串最多50个字符,结果最大150
strcpy(result, str1); // 将第一个字符串复制到结果
strcat(result, str2); // 连接第二个字符串到结果
strcat(result, str3); // 最后连接第三个字符串
// 注意:strcat()会自动添加空字符'\0'作为结束标志,所以result的长度不需要包含这个空字符。
```
2. **使用`strncat()`结合动态内存分配** (避免溢出风险) :
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
size_t combined_length(const char* a, const char* b, const char* c) {
size_t len_a = strlen(a);
size_t len_b = strlen(b);
size_t len_c = strlen(c);
return len_a + len_b + len_c + 1; // 加一用于存储空字符'\0'
}
int main() {
char* result = malloc(combined_length(str1, str2, str3));
if (!result) {
printf("Memory allocation failed.\n");
return 1;
}
strcpy(result, str1);
strncat(result, str2, strlen(str2)); // 使用strncat以防止缓冲区溢出
strncat(result, str3, strlen(str3));
// 使用完后记得释放内存
free(result);
return 0;
}
```
在这个例子中,我们首先计算出所有字符串加空字符后的总长度,然后动态分配足够的空间,再分别连接各个字符串。
阅读全文