专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »C语言教程 » java字符串替换:用C语言实现字符串替换功能 »正文

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

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: