领悟旧事

Learned Helplessness
分类新闻>>技术文章>>
char字符串寻找且替换函数
来源:http://www.xx0594.com/
时间:2018-6-29
作者:  浏览人数:1058
/*作者:姚崇崇
链接:https://www.zhihu.com/question/29697022/answer/45287342
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
*/
char *strReplace(const char *original, const char *substr, const char *replace) {
    char *tok = NULL;
    char *newstr = NULL;
    char *oldstr = NULL;
    char *head = NULL;

    if (original == NULL || substr == NULL || replace == NULL)
    {
        return NULL;
    }
        
    newstr = strdup(original);
    head = newstr;
    while ((tok = strstr(head, substr)))
    {
        oldstr = newstr;
        newstr = (char*) malloc(strlen(oldstr) - strlen(substr) + strlen(replace) + 1);
        /*failed to alloc mem, free old string and return NULL */
        if (newstr == NULL)
        {
            free(oldstr);
            return NULL;
        }
        memcpy(newstr, oldstr, tok - oldstr);
        memcpy(newstr + (tok - oldstr), replace, strlen(replace));
        memcpy(newstr + (tok - oldstr) + strlen(replace), tok + strlen(substr), strlen(oldstr) - strlen(substr) - (tok - oldstr));
        memset(newstr + strlen(oldstr) - strlen(substr) + strlen(replace), 0, 1);
        head = newstr + (tok - oldstr) + strlen(replace);
        free(oldstr);
    }
    return newstr;
}
//---------------------------------------------------------------------------

关闭窗口
 访问量:507965
任何第三方若要引用、转摘本站信息,均需征得本站书面同意,否则视为侵权。本站信息为个人观点,若因引用本站信息而产生的任何情况,均与本站无关。Email:linmutou@163.com
闽ICP备14017840号-2