使用指针方式实现两个字符串的连接(不能使用strcat函数),并将连接后的字符串输出。 输入格式: 输入一行以回车结束的非空字符串(不超过40个字符),再输入一行以回车结束的非空字符串(不超过40个字符)。 输出格式: 一行输出俩字符串连接后新的字符串。
时间: 2024-05-03 13:20:14 浏览: 59
好的,我可以回答这个问题。
您可以按照以下的代码实现这个功能:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char s1[41], s2[41];
cin.getline(s1, 41);
cin.getline(s2, 41);
int len1 = strlen(s1);
int len2 = strlen(s2);
char *s = new char[len1 + len2 + 1];
for (int i = 0; i < len1; i++) {
*(s + i) = *(s1 + i);
}
for (int i = 0; i < len2; i++) {
*(s + len1 + i) = *(s2 + i);
}
*(s + len1 + len2) = '\0';
cout << s << endl;
delete[] s;
return 0;
}
```
解释如下:
1. 首先定义一个字符数组 `s1` 和 `s2`,分别用于存储输入的两个字符串,他们的长度可以最大为 40。
2. 通过 `cin.getline()` 函数获取两个字符串。
3. 使用 `strlen()` 函数获取两个字符串的长度。
4. 动态分配一个字符数组,大小为两个字符串长度加1(加1是为了存储字符串结束符 `\0`)。
5. 使用指针方式将第一个字符串复制到新的字符数组中。
6. 继续使用指针方式将第二个字符串复制到新字符数组中原有字符串的末尾处。
7. 最后在新字符串的末尾处添加字符串结束符 `\0`。
8. 输出新字符串,并使用 `delete[]` 释放动态分配的内存。
9. 程序结束。
阅读全文