编写一个程序,将两个字符串连接起来,不要用 strcat 或 strncat 函数。
时间: 2024-09-24 22:06:42 浏览: 51
当不用`strcat`或`strncat`函数的情况下,你可以手动编写一个字符串连接的算法。这里是一个简单的示例,使用C语言中的数组和指针来实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 功能:将两个字符串连接成一个新的字符串
char* joinStrings(char* str1, char* str2) {
// 获取两个字符串的长度
int len1 = strlen(str1);
int len2 = strlen(str2);
// 检查是否有足够的空间存储结果,包括终止符'\0'
if (len1 + len2 + 1 <= sizeof(char*) - 1) {
// 分配新字符串的空间
char* result = (char*)malloc(len1 + len2 + 1); // 包含null字符的总长度
// 复制第一个字符串到结果
for (int i = 0; i < len1; i++) {
result[i] = str1[i];
}
// 添加第二个字符串
result[len1] = '\0'; // 结束标记
for (int i = 0; i < len2; i++) {
result[len1 + i] = str2[i];
}
result[len1 + len2] = '\0'; // 结合两个字符串后的结束标记
return result;
} else {
printf("Not enough memory to create the combined string.\n");
return NULL;
}
}
int main() {
char str1[] = "Hello, ";
char str2[] = "world!";
char* combined = joinStrings(str1, str2);
if (combined) {
printf("%s", combined);
free(combined); // 释放动态分配的内存
}
return 0;
}
```
在这个例子中,我们创建了一个新的字符串并逐个字符地复制源字符串直到完成。请注意,在实际编程中,你应该处理可能出现的内存分配失败情况。
阅读全文