首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

用C语言实现字符串替换函数.字符串真纠结,该怎么解决

2012-03-29 
用C语言实现字符串替换函数...字符串真纠结用C语言实现字符串替换函数。函数原型为: char *strreplace(char

用C语言实现字符串替换函数...字符串真纠结
用C语言实现字符串替换函数。
函数原型为: char *strreplace(char *src, char *sub, char *dst);
将字符串src中sub字符串替换成dst字符串, 返回值为替换后的字符串。
参数说明:
src --- 源字符串
sub --- 被替换的字符串
dst --- 替换的字符串
返回:
  替换后输出的字符串。


[解决办法]

C/C++ code
#include<stdio.h>#include<string.h>#include <stdlib.h>char *replace(char *src, char *sub, char *dst){    int pos = 0;    int offset = 0;    int srcLen, subLen, dstLen;    char *pRet = NULL;    srcLen = strlen(src);    subLen = strlen(sub);    dstLen = strlen(dst);    pRet = (char *)malloc(srcLen + dstLen - subLen + 1);//(外部是否该空间)    if (NULL != pRet)    {        pos = strstr(src, sub) - src;        memcpy(pRet, src, pos);        offset += pos;        memcpy(pRet + offset, dst, dstLen);        offset += dstLen;        memcpy(pRet + offset, src + pos + subLen, srcLen - pos - subLen);        offset += srcLen - pos - subLen;        *(pRet + offset) = '\0';    }    return pRet;}
[解决办法]
C/C++ code
#include <stdio.h>#include <string.h>char s[256];char *p;int r,n,i;int main() {    while (1) {        printf("请输入一行文字(空行结束),\"%%20\"将替换为\" \",\"你懂得\"将替换为\"XXXXXX\":\n");        fgets(s,256,stdin);        if ('\n'==s[0]) break;        p=s;        while (1) {            p=strstr(p,"%20");            if (p) {                memmove(p+1,p+3,strlen(p)-3+1);                p[0]=' ';            } else break;        }        p=s;        while (1) {            p=strstr(p,"你懂得");            if (p) {                memmove(p+6,p+6,strlen(p)-6+1);                for (i=0;i<6;i++) p[i]='X';            } else break;        }        printf("%s",s);    }    return 0;}//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX"://abcdefg%20helloworld%20something.pdf//abcdefg helloworld something.pdf//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX"://这是测试文字你懂得,在这个你懂的地方,就得做你懂得的事//这是测试文字XXXXX,在这个你懂的地方,就得做XXXXX的事//请输入一行文字(空行结束),"%20"将替换为" ","你懂得"将替换为"XXXXXX":// 

热点排行