一、具体要求:
编写一个函数char *squeeze(char *s,char c)删除字符串s中所有c字符,返回处理后的新字符串首地址。由主函数输入字符串s(字符串s的存储方式可以是字符数组或堆内存)和字符c,调用函数squeeze处理删除操作 ,在主函数中输出删除完成后的s中新字符串。要求:在原字符串空间内进行删除操作。
二、完整代码:
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
void func(char*str,char*del,int *length, int lengthdel);
int main()
{
cout<<"输入一段字符串,再输入一段子串,将从原字符串中删除子串:"<<endl;
char *str=(char *)malloc(100*sizeof(char));
char *del=(char *)malloc(100*sizeof(char));
cout<<"输入一段字符串:"<<endl;
cin.getline(str,100);
cout<<"输入要删除的子串:"<<endl;
cin.getline(del,100);
int length=strlen(str);
int lengthdel=strlen(del);
func(str,del,&length,lengthdel);
cout<<"处理后的结果为:"<<endl;
for(int i=0;i<length;i++) cout<<str[i];
}
void func(char*str,char*del,int *length, int lengthdel)
{
int judge=0;
for(int i=0;i<(*length);i++)
{
judge=0;
for(int j=0;j<lengthdel;j++)
{
if(str[i+j]==del[j])
judge=judge+1;
else
{
j=0;
break;
}
}
if(judge==lengthdel)
{
for(int k=i;k<((*length)-lengthdel);k++)
str[k]=str[k+lengthdel];
i--;
(*length)=(*length)-lengthdel; //注意括号!
}
}
}