用c++代码写出请编写一个函数,能够实现删除字符串中指定的字符。函数原型如下:char* DeleteChar(char*str,char ch),其功能是把str所指向的字符串中的所包含ch字符删除,然后返回删除后的字符串。要求:在主函数中进行输入和输出。输入说明: 输入占两行,第一行为待删除的字符串,第二行为需要删除的字符。输出说明: 输出占一行,即删除之后的字符串。【输入样例】 J#udge #not #fro#m a#ppear#anc#es # 答题详情 【输出样例】 联想应 Judge not from appearances.
时间: 2024-04-04 09:35:55 浏览: 101
以下是代码实现:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
char* DeleteChar(char* str, char ch) {
char* p;
char* q;
p = q = str;
while (*q != '\0') {
if (*q != ch) {
*p++ = *q;
}
q++;
}
*p = '\0';
return str;
}
int main() {
char str[1000];
char ch;
cin.getline(str, 1000);
cin >> ch;
cout << DeleteChar(str, ch);
return 0;
}
```
输入样例:
```
J#udge #not #fro#m a#ppear#anc#es #
#
```
输出样例:
```
Judge not from appearances.
```
相关问题
3请编写 一个函数,能够实现删除字符串中指定的字符。函数原型如下: char* DeleteChar(char* str, char ch),其功能是把str所指向的字符串中的所包含ch字符删除,然后返回删除后的 123. 字符串。要求:在主函数中进行输入和输出。 输入说明: 输入占两行,第一行为待删除的字符串,第二行为需要删除的字符。 输出说明: 输出占一行, 即删除之后的字符串。
以下是实现题目要求的 C++ 代码:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
char* DeleteChar(char* str, char ch)
{
int len = strlen(str);
int i, j;
for (i = 0, j = 0; i < len; i++)
{
if (str[i] != ch)
{
str[j++] = str[i];
}
}
str[j] = '\0';
return str;
}
int main()
{
char str[100], ch;
cin.getline(str, 100);
cin >> ch;
DeleteChar(str, ch);
cout << str << endl;
return 0;
}
```
函数 DeleteChar 的实现遍历字符串,如果字符不是待删除的字符,则将其拷贝到结果字符串中。最后将结果字符串末尾置为 '\0',并返回结果字符串。
在主函数中,先输入待删除的字符串,然后输入需要删除的字符。调用 DeleteChar 函数,输出删除之后的字符串即可。
C++本关任务:编写一个函数: char *ReplaceString(char * str, char * s1, char * s2); 该函数用s2替换str中的s1,函数返回替换后的字符串的指针。 题目中已经给出main函数,main函数会调用ReplaceString函数进行测试,依次输入字符串str、s1和s2,最后输出替换后字符串。
好的,我会帮您实现该函数。下面是代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
char *ReplaceString(char * str, char * s1, char * s2) {
char *result_str = new char[strlen(str) + 1]; // 用于存放替换后的字符串
char *temp_str = str; // 用于遍历原字符串
char *temp_ptr = strstr(temp_str, s1); // 用于记录s1在原字符串中出现的位置
int s1_len = strlen(s1);
int s2_len = strlen(s2);
while (temp_ptr) {
strncat(result_str, temp_str, temp_ptr - temp_str); // 拼接s1之前的字符串
strcat(result_str, s2); // 拼接s2
temp_str = temp_ptr + s1_len; // 移动指针
temp_ptr = strstr(temp_str, s1); // 继续查找s1
}
strcat(result_str, temp_str); // 拼接s1之后的字符串
strcpy(str, result_str); // 将替换后的字符串拷贝回原字符串
delete[] result_str; // 释放内存
return str;
}
int main() {
char str[100];
char s1[100];
char s2[100];
cin.getline(str, 100);
cin.getline(s1, 100);
cin.getline(s2, 100);
ReplaceString(str, s1, s2);
cout << str << endl;
return 0;
}
```
函数的实现过程如下:
1. 首先根据原字符串的长度动态分配一块内存,用于存放替换后的字符串。
2. 然后遍历原字符串,查找s1在其中出现的位置,并将s1之前的字符串拼接到结果字符串中。
3. 将s2拼接到结果字符串中。
4. 移动指针到s1之后的位置,继续查找s1。
5. 重复2-4步,直到在原字符串中找不到s1。
6. 将s1之后的字符串拼接到结果字符串中。
7. 将替换后的字符串拷贝回原字符串。
8. 释放内存,返回原字符串指针。
阅读全文