C语言替换字符串中的子串

#include
#include

char* ReplaceSubStr(const char* str, const char* srcSubStr, const char* dstSubStr, char* out)
{
    if (!str&&!out)
    {
        return NULL;
    }
    if (!srcSubStr && !dstSubStr)
    {
        return out;
    }
    char *out_temp = out;
    int src_len = strlen(srcSubStr);
    int dst_len = strlen(dstSubStr);
    while (*str!='\0')
    {
        if (*str == *srcSubStr)
        {
            //可能发生替换
            const char* str_temp = str;
            int flag = 0;
            for (int i = 0; i < src_len; i++)
            {
                if (str_temp[i]!=srcSubStr[i])
                {
                    flag = 1;
                    break;
                }
            }
            if (flag)
            {
                //说明不用替换
                *out_temp++ = *str++;
            }
            else
            {
                //说明要替换
                for (int i = 0; i < dst_len; i++)
                {
                    *out_temp++ = dstSubStr[i];
                }
                str = str + src_len;
            }
        }
        else
        {
            //不用替换
            *out_temp++ = *str++;
        }
    }
    *out_temp = 0;
    return out;
}

int main()
{
    char str[1024];
    char src[1024];
    char dst[1024];
    char out[1024];
    //输入字符串
    gets_s(str);
    gets_s(src);
    gets_s(dst);

    ReplaceSubStr(str, src, dst, out);

    printf("%s\n", out);
    return 0;
}
C语言替换字符串中的子串_第1张图片
运行输出结果

你可能感兴趣的:(C语言替换字符串中的子串)