用C语言实现字符串替换功能
来源:互联网 发布:网络平台怎么开拓市场 编辑:程序博客网 时间:2024/05/21 11:12
下面是用C语言实现字符串替换功能的代码:
char *replace(char *source, char *sub, char *rep)
{
char *result;
/*pc1 是复制到结果result的扫描指针*/
/*pc2 是扫描 source 的辅助指针*/
/*pc3 寻找子串时,为检查变化中的source是否与子串相等,是指向sub的扫描指针 */
/*找到匹配后,为了复制到结果串,是指向rep的扫描指针*/
char *pc1, *pc2, *pc3;
int isource, isub, irep;
isub = strlen(sub); /*对比字符串的长度*/
irep = strlen(rep); /*替换字符串的长度*/
isource= strlen(source); /*源字符串的长度*/
if(NULL == *sub)
return strdup(source);
/*申请结果串需要的空间*/
result = (char *)malloc(( (irep > isub) ? (float)strlen(source) / isub* irep+ 1:isource ) * sizeof(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]
/* 如果找到了子串,进行以下处理工作*/
if(NULL == *pc3)
{
pc3 = rep;
/*将替代串追加到结果串*/
while(*pc3 != NULL)
*pc1++ = *pc3++;
pc2--;
source = pc2;
/* 检查 source与sub相等的循环结束后,
* pc2 对应的位置是在 sub 中串结束符处。该是源串中下一个位置。
* 将 source 指向其前面一个字符。
***************************************************/
}
else /*如果没找到子串,下面复制source所指的字节到结果串*/
*pc1++ = *source;
source++; /* 将source向后移一个字符*/
}
*pc1 = NULL;
return result;
}
以下为测试代码:
int main()
{
char s1[] ="abbccdfdcdbbdcd";
char s2[]="dcd";
char s3[]="12345";
char *p = replace(s1,s2,s3);
printf("source=%s
",s1);
puts(s1);
printf("sub = %s
",s2);
puts(s2);
printf("replace string = %s",p);
return 0;
}
欢迎访问:乐园www.ly8.co
- 用C语言实现字符串替换功能
- 用C语言实现字符串替换功能
- C语言实现字符串替换
- C语言实现字符串替换
- c语言实现字符串字串的替换
- C语言实现字符串替换函数
- C语言实现字符串替换函数
- C语言 字符串替换
- C语言替换字符串
- 字符串替换C语言
- c语言字符串替换
- C语言字符串替换函数,字符串插入函数的实现
- 使用C语言实现字符串中子字符串的替换
- Linux下C语言实现字符串子串替换
- C语言实现:替换字符串中指定字符
- C语言现代方法之实现字符串的替换
- C语言现代方法之实现字符串的替换
- Linux下C语言实现字符串子串替换
- 几行代码解决淘宝面试题之Clojure版
- 如何使用jQuery向asp.net Mvc传递复杂json数据
- 人在喧嚣中变得好孤单
- NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
- Linux操作系统下/etc/hosts文件配置方法
- 用C语言实现字符串替换功能
- cannot restore segment prot after reloc Permission denied 错误的解决方法
- 编写一函数,将一个数字(Integer)转换成中文返回。
- 定时触发函数这System.Timers.Timer对象
- mapreduce的总结
- OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中
- 网站测试基本方法-9.连接速度测试
- 服务器端实现光标定位事件
- 各国邮政标志面面观