Chinaunix首页 | 论坛 | 博客
  • 博客访问: 203451
  • 博文数量: 63
  • 博客积分: 1002
  • 博客等级: 准尉
  • 技术积分: 640
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-11 20:34
文章分类

全部博文(63)

文章存档

2017年(2)

2015年(3)

2013年(4)

2012年(21)

2011年(33)

分类: C/C++

2011-12-14 15:14:01

#include
#include
#include

// 字符串替换(源字符串, 旧字符串, 新字符串)
char *replace(const char *str, const char *str1, const char *str2)
{
    char *pstr1, *pstr2, *pbuf1, *pbuf2;
    char ch;
    pbuf1 = NULL;
    pbuf2 = NULL;
    pstr1 = strstr(str, str1);
    while (pstr1 != NULL) {
        ch = *pstr1;
        *pstr1 = 0;
        if (pbuf1 == NULL) {
            pbuf1 = (char *)malloc(strlen(str) + strlen(str2) + 1);
            pbuf1[0] = 0;
        } else {
            pbuf2 = (char *)malloc(strlen(pbuf1) + strlen(str) + strlen(str2) + 1);
            strcpy(pbuf2, pbuf1);
            free(pbuf1);
            pbuf1 = pbuf2;
        }
        strcat(pbuf1, str);
        strcat(pbuf1, str2);
        *pstr1 = ch;
        str = pstr1 + strlen(str1);
        pstr1 = strstr(str, str1);
    }
    if (str && str[0]) {
        if (pbuf1 == NULL) {
            pbuf1 = (char *)malloc(strlen(str) + strlen(str2) + 1);
            pbuf1[0] = 0;
        } else {
            pbuf2 = (char *)malloc(strlen(pbuf1) + strlen(str) + strlen(str2) + 1);
            strcpy(pbuf2, pbuf1);
            free(pbuf1);
            pbuf1 = pbuf2;
        }
        strcat(pbuf1, str);
    }
    return pbuf1;
}

main()
{
    char str[] = "111\n2222\n333";
    char *an;
    printf("%s\n\n", str);
    an = replace(str, "\n2222\n", "");
    printf("%s\n", an);
}
阅读(2565) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~