写一个函数,将两个字符串连接。 注:不要使用库函数 strcat,自己写函数实现。
时间: 2024-09-14 16:17:33 浏览: 53
当然可以。你可以创建一个简单的C语言函数,名为`string_concat`,它接受两个`char`类型的指针作为输入参数,并返回一个新的指向组合后的字符串的指针。这个函数会逐个字符地复制第一个字符串到第二个字符串之后,最后添加一个终止符'\0'来表示字符串结束。
```c
#include <stdio.h>
#include <stdlib.h> // 用于动态内存分配
// 定义函数,合并两个字符串并返回结果字符串的地址
char* string_concat(char* str1, char* str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
// 计算新字符串的总长度
int total_len = len1 + len2 + 1; // 加一是因为需要额外的空间存放'\0'
// 动态分配足够的空间存储新字符串
char* result = (char*)malloc(total_len * sizeof(char));
if (!result) { // 检查内存分配是否成功
printf("Memory allocation failed.\n");
return NULL;
}
// 将str1复制到新字符串
memcpy(result, str1, len1); // 使用memcpy避免逐个字符复制
// 将'\0'添加到str1的结尾,然后拷贝str2
result[len1] = '\0'; // 结束str1
memcpy(&result[len1+1], str2, len2); // 复制str2
result[len1+len2] = '\0'; // 结束str2
return result;
}
int main() {
char str1[] = "Hello, ";
char str2[] = "world!";
char* combined_str = string_concat(str1, str2);
if (combined_str != NULL) {
printf("Combined string: %s\n", combined_str);
free(combined_str); // 释放内存
}
return 0;
}
```
在这个例子中,`main`函数展示了如何使用`string_concat`来连接两个字符串。
阅读全文