题目:
只要是原字符串中有相同的子串就删掉,不管有多少个,返回子串个数。
代码:
int Delete_Sub_Str(const char *str, const char *sub_str, char *result)
{
if(str == NULL || sub_str == NULL)
{
return 0;
}
//记录子字符串出现次数
int count = 0;
//备份字符串和子字符串
const char *string, *subString;
string = str;
subString = sub_str;
//分别计算字符串和子字符串
int strLen = strlen(string);
int subStrLen = strlen(subString);
//申请一个临时变量
char *tempSubStr;
tempSubStr = (char *)malloc(subStrLen+1);
memset(tempSubStr, 0, subStrLen+1);
while(*string != '\0')
{
memcpy(tempSubStr, string, subStrLen);
if(strcmp(tempSubStr, subString) == 0)
{
count++;
memset(tempSubStr, 0, subStrLen+1);
string += subStrLen;
}else
{
*result++ = *string;
memset(tempSubStr, 0, subStrLen+1);
string++;
}
}
if(tempSubStr)
{
free(tempSubStr);
}
return count;
}