删除一个字符串中的子串并统计子串的个数
#include <stdio.h>
#include <string.h>
int delete_sub_str(const char *str, const char *sub_str, char *result_str);
int main()
{
char *str = "12334343473456";
char *sub_str = "34";
char result[100];
printf("%d\n%s\n", delete_sub_str(str, sub_str, result), result);
return 0;
}
int delete_sub_str(const char *str, const char *sub_str, char *result_str)
{
int count = 0;
int str_len = strlen(str);
int sub_str_len = strlen(sub_str);
if(NULL == str || NULL == sub_str)
return 0;
if (*str == '\0') //empty string
{
*result_str = '\0';
return 0;
}
if (str_len < sub_str_len || sub_str == NULL) //if str_len is smaller then sub_str_len
{
while (*str != '\0')
{
*result_str = *str;
str++;
result_str++;
}
return 0;
}
while (*str != '\0')
{
while (*str != *sub_str && *str != '\0')
{
*result_str = *str;
str++;
result_str++;
}
if (strncmp(str, sub_str, sub_str_len) != 0) //strncmp function
{
*result_str = *str;
str++;
result_str++;
}
else
{
count++;
str += sub_str_len;
}
}
*result_str = '\0';
return count;
}