//VC++ 6.0编译通过
# include <iostream>
# include <assert.h>
using namespace std;
int main()
{
char* remove_chars(char *str, const char *rmchars);//函数声明
//demo
char a[]="abcdefghs24502ew5a55de4ajks33jksjkjdjdade";//
cout<<a<<endl;
remove_chars(a,"0123456789");
assert(strcmp(a,"abcdefghsewadeajksjksjkjdjdade")==0);//测试代码
cout<<a<<endl;//删除a中所有数字,output:abcdefghsewadeajksjksjkjdjdade
return 0;
}
char* remove_chars(char *str,const char *rmchars)//删除str中所有包含在rmchars中的字符
{
char buff[256]={0};
char *ps1,*ps2;
ps1=(char *)rmchars;
while(*ps1)
buff[*ps1++]=1;//遍历rmchars,将要删除的字符对应在buff中的位置1
ps2=str;
while(*ps2)//遍历str,将要删除的字符置为1
{
if(1==buff[*ps2])
*ps2=1;
ps2++;
}
ps1=str;
ps2=str;
while(0!=*ps1)//调整str中字符位置,删除所有置为1的位
{
if(1!=*ps1)
{
ps1++;
continue;
}
ps2=ps1+1;
while(0!=*ps2 && 1==*ps2)
ps2++;
if(0==*ps2)
break;
*ps1++=*ps2;
*ps2=1;
}
*ps1=0;
return str;
}