C语言字符替换

来源:百度知道 编辑:UC知道 时间:2024/06/18 08:21:30
编写一个字符替换函数rep(char *s,char*s1,char *s2),实现将已知的字符串所有属于字符串s1的字符全部用S2中的对应字符代替.
e.g:字符串s,s1,s2分别如下:
char s[]=''ABCABC'',s1[]='AC',s2[]=''xy''调用函数后 s的内容变成xByxBy 大家帮帮我啊

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)