完成空出函数fun(char*s,char*t)部分
时间: 2023-11-14 11:12:17 浏览: 70
编写函数void fun(char *s,char *t,char *p)将未在字符串s中出现、而在字符串t中出现的字符, 形成一个新的字符串放在p中,p中字符按原字符串中字符顺序排列,但去掉重复字符。
5星 · 资源好评率100%
根据您提供的信息,我假设您需要一个函数`fun(char *s, char *t)`,它的功能是将字符串`t`插入到字符串`s`的每个字符后面,形成一个新的字符串并返回。以下是一个可能的实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
char* fun(char *s, char *t) {
int len_s = strlen(s);
int len_t = strlen(t);
char *result = new char[len_s + len_t + 1]; // +1是为了存储字符串结束符'\0'
int index = 0;
for (int i = 0; i < len_s; i++) {
result[index++] = s[i];
for (int j = 0; j < len_t; j++) {
result[index++] = t[j];
}
}
result[index] = '\0'; // 添加字符串结束符
return result;
}
int main() {
char s[] = "hello";
char t[] = "world";
char *result = fun(s, t);
cout << result << endl;
delete[] result; // 释放result所占的内存
return 0;
}
```
在上面的代码中,我们首先计算了`s`和`t`的长度,然后根据它们的长度动态分配了一个新的字符数组`result`来存储新字符串。接下来使用两个嵌套的循环将`t`插入到`s`的每个字符后面。最后,我们在`result`的末尾添加一个字符串结束符`\0`,并将`result`返回。
需要注意的是,由于`result`是在函数内部动态分配的内存,因此需要在使用完毕后手动释放,以避免内存泄漏。在上面的代码中,我们使用了`delete[]`运算符来释放`result`所占的内存。
阅读全文