删除模式串中出现的字符,例如“welcome to asted,模式串为“aeiou",得到的字符串为"wlcm t std"
思路:遍历每个字符串,逐个删除
#include <iostream>
using namespace std;
/*
//数组形式实现
char * strdel(char *a, const char * b)
{
if(a==NULL||b==NULL)
return NULL;
int i=0,j=0;
while(a[i]!='\0')
{
int k=0;
while(b[k]!='\0')
{
if(a[i]==b[k])
{
i++;
break;
}
k++;
}
a[j++]=a[i++];
}
a[j]='\0';
return a;
}
*/
//指针形式实现char * strdel(char *a, const char * b)
{
if(a==NULL||b==NULL)
return NULL;
char *p1=a;
char *p2=a;
while(*p1!='\0')
{
const char *p3=b;
while(*p3!='\0')
{
if(*p1==*p3)
{
p1++;
break;
}
p3++;
}
*p2=*p1;
p1++;
p2++;
}
*p2='\0';
return a;
}
int main()
{
char a[100]="hello world!";
char b[100]="abo";
cout <<strdel(a,b) << endl;
return 0;
}
输出结果:
hell wrld!