46

问答题 46 /85

删除字符串中所有给定的子串问题描述:在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。

要求实现函数:  int delete_sub_str(const char *str, const char *sub_str, char *result_str)

【输入】 str:输入的被操作字符串

         sub_str:需要查找并删除的特定子字符串 【输出】 result_str:在str字符串中删除所有 sub_str子字符串后的结果

【返回】 删除的子字符串的个数

参考答案

#include<stdio.h>
#include<string.h>
int delete_sub_str(const char *str, const char *sub_str, char *result_str)
{
    int count = 0;
    int k = 0, j = 0;
    int tem;
    int n = strlen(sub_str);
    while (str[k] != '\0')
    {
        tem = k;
        for (int i = 0; i < n; i++)
        {
            if (sub_str[i] == str[k]) k++;
            else
            {
                break;
            }
        }
        if (i == n) count++;
        else
        {
            result_str[j++] = str[tem];
            k = tem + 1;
        }
    }
    result_str[j] = '\0';
    return count;
}
int main()
{
    char *str = "aaadbaadcd";
    char *sub = "aad";
    char res[50] = "";
    int count = delete_sub_str(str, sub, res);
    printf("子字符串的个数是:%d\n", count);
    printf("删除子字符串后:%s\n", res);
    return 0;
}