删除子串,只要是原串中有相同的子串就删掉,不管有多少个,返回子串个数。
比如输入:123abc12de234fg1hi34j123k
子串:123
输出:abc12de234fg1hi34jk
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int delete_sub_str(const char* str,const char* sub_str,char* result)
{
if(str==NULL||sub_str==NULL)
return -1;
int strLen=strlen(str);
int substrLen=strlen(sub_str);
int count=0;
const char* p=str;
const char* q=sub_str;
char* tmp=(char *)malloc(substrLen+1);
memset(tmp,'0',substrLen);
while(*p){
memmove(tmp,p,substrLen);
tmp[substrLen]='\0';
if(strcmp(tmp,q)==0){
count++;
p=p+substrLen;
}
else{
*result=*p;
p++;
result++;
}
memset(tmp,'0',substrLen+1);
}
*result='\0';
free(tmp);
tmp=NULL;
printf("number of sub string is : %d\n",count);
return count;
}
int main()
{
char* Instr="123abc12de234fg1hi34j123k";
char* Substr="123";
int len=strlen(Instr);
char* Outstr=(char *)malloc(len+1);
delete_sub_str(Instr,Substr,Outstr);
printf("string after delete sub string is : %s\n",Outstr);
free(Outstr);
Outstr=NULL;
return 0;
}