在一个字符串中删除一些字符串指针的有关问题
在一个字符串中删除一些字符串指针的问题
#include "stdafx.h"
#define _MAX_ 256 //字符串最大长度
int delstring(char **target,char *source); //删除字符串的函数
int main()
{
char *p_target=0;
char *p_source=0;
int k=0;
p_target=new char[_MAX_]; //申请空间
p_source=new char[_MAX_]; //申请空间
cout<<"请输入目标串: ";
cin>>p_target;
cout<<"请输入删除串: ";
cin>>p_source;
cout<<"在\""<<p_target<<"\"内删除\""<<p_source<<endl;
cout<<"---------------"<<endl;
if (strlen(p_target)<strlen(p_source))
cout<<"目标串长度小于替换串!"<<endl;
else
{
k=delstring(&p_target,p_source); //删除
if (k>0) //成功
cout<<p_target<<endl;
else
cout<<"没找到!"<<endl;
}
delete[] p_target; //释放
delete[] p_source;
p_target=0; //赋空值
p_source=0;
return 0;
}
int delstring(char **target,char *source)
{
char *p_target=*target;
char *p_source=source;
char *p_temp=0;
char *p_next=0;
int pos=0;
p_temp=new char[strlen(*target)]; //申请临时空间
p_next=p_temp; //保留指针头
while(strlen(p_target)>=strlen(source))
{
if (*p_target==*p_source) //寻找相等串
{
for(pos=0;pos<strlen(source);pos++)
{
if (*(p_target+pos)!=*p_source)
break; //寻找结束
p_source++; //移动到下一个单元
}
//部分相等时,拷贝串
if (pos<strlen(source))
{
for(int i=0;i<pos;i++)
{
*p_next=*(p_target+i);//拷贝数据单元
p_next++; //移动下一个单元
}
#include "stdafx.h"
#define _MAX_ 256 //字符串最大长度
int delstring(char **target,char *source); //删除字符串的函数
int main()
{
char *p_target=0;
char *p_source=0;
int k=0;
p_target=new char[_MAX_]; //申请空间
p_source=new char[_MAX_]; //申请空间
cout<<"请输入目标串: ";
cin>>p_target;
cout<<"请输入删除串: ";
cin>>p_source;
cout<<"在\""<<p_target<<"\"内删除\""<<p_source<<endl;
cout<<"---------------"<<endl;
if (strlen(p_target)<strlen(p_source))
cout<<"目标串长度小于替换串!"<<endl;
else
{
k=delstring(&p_target,p_source); //删除
if (k>0) //成功
cout<<p_target<<endl;
else
cout<<"没找到!"<<endl;
}
delete[] p_target; //释放
delete[] p_source;
p_target=0; //赋空值
p_source=0;
return 0;
}
int delstring(char **target,char *source)
{
char *p_target=*target;
char *p_source=source;
char *p_temp=0;
char *p_next=0;
int pos=0;
p_temp=new char[strlen(*target)]; //申请临时空间
p_next=p_temp; //保留指针头
while(strlen(p_target)>=strlen(source))
{
if (*p_target==*p_source) //寻找相等串
{
for(pos=0;pos<strlen(source);pos++)
{
if (*(p_target+pos)!=*p_source)
break; //寻找结束
p_source++; //移动到下一个单元
}
//部分相等时,拷贝串
if (pos<strlen(source))
{
for(int i=0;i<pos;i++)
{
*p_next=*(p_target+i);//拷贝数据单元
p_next++; //移动下一个单元
}