java字符串替换:用C语言实现字符串替换功能来源: 发布时间:星期四, 2009年2月12日 浏览:148次 评论:0
下面是用C语言实现串替换功能代码: char *replace(char *source, char *sub, char *rep) { char *result; /*pc1 是复制到结果result扫描指针*/ /*pc2 是扫描 source 辅助指针*/ /*pc3 寻找子串时,为检查变化中source是否和子串相等,是指向sub扫描指针 */ /*找到匹配后,为了复制到结果串,是指向rep扫描指针*/ char *pc1, *pc2, *pc3; isource, isub, irep; isub = strlen(sub); /*对比串长度*/ irep = strlen(rep); /*替换串长度*/ isource= strlen(source); /*源串长度*/ (NULL *sub) strdup(source); /*申请结果串需要空间*/ result = (char *)malloc(( (irep > isub) ? (float)strlen(source) / isub* irep+ 1:isource ) * (char)); pc1 = result; /*为pc1依次复制结果串每个字节作准备*/ while(*source != NULL) { /*为检查source和sub是否相等作准备,为pc2,pc3 赋初值*/ pc2 = source; pc3 = sub; /* 出循环(任)条件是: * *pc2 不等于 *pc3 (和子串不相等) * pc2 到源串结尾 * pc3 到源串结尾 (此时,检查了全部子串,source处和sub相等) *****************************************************/ while(*pc2 *pc3 && *pc3 != NULL && *pc2 != NULL) pc2, pc3; [Page] /* 如果找到了子串,进行以下处理工作*/ (NULL *pc3) { pc3 = rep; /*将替代串追加到结果串*/ while(*pc3 != NULL) *pc1 = *pc3; pc2--; source = pc2; /* 检查 source和sub相等循环结束后 * pc2 对应位置是在 sub 中串结束符处该是源串中下个位置 * 将 source 指向其前面个 ***************************************************/ } /*如果没找到子串,下面复制source所指字节到结果串*/ *pc1 = *source; source; /* 将source向后移个*/ } *pc1 = NULL; result; } 以下为测试代码: { char s1 =\"abbccdfdcdbbdcd\"; char s2=\"dcd\"; char s3=\"12345\"; char *p = replace(s1,s2,s3); prf(\"source=%s\\n\",s1); puts(s1); prf(\"sub = %s\\n\",s2); puts(s2); prf(\"replace = %s\",p); 0; } 0
相关文章读者评论发表评论 |
|