本题要求编写程序,使用指针方式实现两个字符串的连接(不能使用strcat函数),并将连接后的字符串输出。 输入格式: 输入一行以回车结束的非空字符串(不超过40个字符),再输入一行以回车结束的非空字符串(不超过40个字符)。 输出格式: 一行输出俩字符串连接后新的字符串。
时间: 2024-12-20 21:21:36 浏览: 2
字符串拼接strcat使用及实现
在C语言中,你可以通过定义两个指向字符数组的指针,并逐个遍历字符串将它们拼接起来。这里是一个简单的示例程序:
```c
#include <stdio.h>
#include <string.h> // 需要包含这个头文件,虽然我们不会使用strcat,但是它的库函数strlen我们会用到
void concatenate(char* str1, char* str2) {
int len1 = strlen(str1); // 计算第一个字符串长度
int len2 = strlen(str2);
// 动态分配足够空间用于合并后的字符串
char* result = (char*)malloc((len1 + len2 + 1) * sizeof(char)); // 加1是因为需要一个终止符'\0'
// 将第一个字符串复制到结果
for(int i = 0; i < len1; ++i) {
result[i] = str1[i];
}
// 将第二个字符串追加到结果
result[len1] = '\0'; // 结束第一个字符串的位置添加'\0'
for(int i = 0; i < len2; ++i) {
result[len1 + i] = str2[i];
}
result[len1 + len2] = '\0'; // 结束合并后的字符串
// 输出结果
printf("连接后的字符串: %s\n", result);
}
int main() {
char str1[50];
char str2[50];
// 读取用户输入
fgets(str1, sizeof(str1), stdin);
fgets(str2, sizeof(str2), stdin);
// 去掉行尾的换行符
str1[strlen(str1) - 1] = '\0';
str2[strlen(str2) - 1] = '\0';
concatenate(str1, str2);
free(result); // 释放动态分配的内存
return 0;
}
```
运行此程序时,请提供两个字符串作为输入,它会输出它们拼接后的结果。
阅读全文