用c语言编写程序将两个字符串连接起来,不可用strcat函数
时间: 2024-10-24 09:11:40 浏览: 14
在C语言中,如果你不能直接使用`strcat()`函数来连接两个字符串,你可以通过动态内存分配和指针操作来手动实现这个功能。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h> // 为了使用strlen()
// 自定义字符串连接函数
char* string_concat(char *dest, char *src) {
int dest_len = strlen(dest); // 获取目标字符串长度
int src_len = strlen(src);
char *new_str = (char*)malloc((dest_len + src_len + 1) * sizeof(char)); // 动态分配新空间
if (new_str == NULL) {
printf("Memory allocation failed!\n");
return NULL;
}
// 将源字符串追加到目标字符串的末尾
for (int i = 0; i < src_len; ++i) {
new_str[dest_len + i] = src[i];
}
new_str[dest_len + src_len] = '\0'; // 添加终止符
// 如果目标字符串之前已经包含'\0',则不需要再添加
if (dest[dest_len - 1] != '\0') {
memmove(new_str, dest, dest_len); // 移动目标字符串到新字符串的开始位置
}
return new_str;
}
int main() {
char str1[] = "Hello, ";
char str2[] = "world!";
char *result = string_concat(str1, str2);
if (result != NULL) {
printf("Concatenated string is: %s\n", result);
free(result); // 释放内存
} else {
printf("Failed to concatenate strings.\n");
}
return 0;
}
```
在这个例子中,我们首先计算了目标字符串和源字符串的总长度,并加上一个额外的空间用于终止符。然后创建一个新的动态数组并复制源字符串的内容。最后,如果需要,我们将目标字符串移动到新数组的开始位置。
阅读全文