删除一个字符串中的子串,要求不用库函数!结果不对大家帮我看看!
函数原型是这样的 int del_sub(const char *str, const char *sub_str,char *result_sub);输入:str 被操作的字符串
sub_str需要查找并删除的特定字符子串
输出:在str字符串中删除所有sub_str子串后的结果
返回:删除子字符串的个数
#include<stdio.h>
#include<string>
int del_sub(char *str, char *sub_str,char *result_sub);
main()
{
int count=0;
char str[100],sub_str[100],result_sub[100];
printf("input the string:\nstr=:");
gets(str);
printf("input the string:\nsun_str=:");
gets(sub_str);
count=del_sub(str,sub_str,result_sub);
printf("\n");
printf("%d\n",count);
}
int del_sub(char *str,char *sub_str,char *result_sub)
{
const char *p1,*p2;
char uu[100];
int i=0;
int count=0;
p1=str;
p2=sub_str;
while(*p1)
{
while(*p2)
{
if(*p1!=*p2)
{
uu[i++]=*p1; //所指元素不相等,同时把除子串以外的用数组存储,退出循环,p1++;
//问题就出在这个地方,如果子字符串只有一部分与被操作的字符串相等,前
//面相等的一部分不能被保存下来,该怎么处理呢?
break;
}
else //所指元素相等,两指针同时自加;
{
p2++;
p1++;
}
}
if(*p2=='\0') //遇到结束符,统计子串出现的次数,p2重新指向子串的首地址;
{
count++;
p2=sub_str;
}
p1++;
}
uu[i]='\0';
result_sub=uu;
puts(result_sub); //输出除子串的剩余字符串;
return count; //返回子串出现的次数
}