试用C语言设计算法,将两个顺序表示的字符串s和t连接起来。要求:不能用strcat函数
时间: 2024-09-29 21:14:56 浏览: 30
在C语言中,如果你想手动将两个顺序表示的字符串s和t连接起来,而不使用`strcat`函数,可以采用循环遍历并逐个字符拼接的方式。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h> // 为了使用malloc
// 动态内存分配函数,用于创建新字符串
char* str_concat(char* s, char* t) {
int len_s = strlen(s);
int len_t = strlen(t);
// 计算总长度,包括结尾的空字符
int total_len = len_s + len_t + 1;
// 动态分配足够的空间存放新字符串
char* result = (char*) malloc(total_len * sizeof(char));
if(result == NULL) { // 检查内存分配是否成功
printf("Memory allocation failed.\n");
exit(1);
}
// 将s复制到result
for(int i = 0; i < len_s; ++i) {
result[i] = s[i];
}
// 将t追加到result的末尾
for(int j = 0; j < len_t; ++j) {
result[len_s + j] = t[j]; // 注意索引加len_s是因为已经复制了s的部分
}
// 结束位置添加空字符作为字符串结束标志
result[total_len - 1] = '\0';
return result;
}
int main() {
char s[] = "Hello";
char t[] = "World!";
char* concatenated_str = str_concat(s, t);
if(concatenated_str) {
printf("Concatenated string is: %s\n", concatenated_str);
free(concatenated_str); // 释放动态内存
}
return 0;
}
```
阅读全文