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

字符串替换char[]?解决方案

2012-02-06 
字符串替换char[]?xx(char szA[], char szB[], char szC[]){//将szA中的szB替换成szC,只有一个szB}[解决办

字符串替换char[]?
xx(char szA[], char szB[], char szC[])
{
//将szA中的szB替换成szC,只有一个szB
}

[解决办法]

C/C++ code
/*************************************************************************************************************************8.编写一个函数find_replace_str,其原型如下:int find_replace_str(char str[],const char find_str[],const char replace_str[])要求:该函数能够完成把字符串str中所有的子串find_str都替换成字符串replace_str,返回值为替换的次数。*************************************************************************************************************************/#include"stdafx.h"int find_replace_str(char str[],const char find_str[],const char replace_str[]){    int num=0;    size_t i=0,j;    size_t flen=strlen(find_str);    size_t rlen=strlen(replace_str);    bool f;        //先记录可替换次数    while('\0'!=str[i])    {        f=true;        j=0;        while(j<flen)        {            if(str[i+j]!=find_str[j++])f=false;        }        if(f)        {            i+=flen;            num++;        }        else        {            i++;        }    }    //动态分配的长度    size_t tsl=strlen(str)+num*(rlen-flen)+1;    //int tsl=strlen(str)+num*(rlen>flen?rlen:flen)+1;    //printf("%d\n",tsl);    char *ts=(char*)malloc(tsl>4?tsl:4);    //char ts[100];    int t=0;    i=num=0;    while('\0'!=str[i])    {        f=true;        j=0;        while(j<flen)        {            if(str[i+j]!=find_str[j++])f=false;        }        if(f)        {            j=0;            while(j<rlen)ts[t++]=replace_str[j++];            i+=flen;            num++;        }        else        {            ts[t++]=str[i++];        }    }    ts[t]='\0';    i=0;    while('\0'!=ts[i])str[i]=ts[i++];    str[i]='\0';    free(ts);    ts=NULL;    return num;}
[解决办法]
C/C++ code
void xx(char szA[], char szB[], char szC[]){    char *p=strstr(szA,szB);    if (p==NULL) return;    size_t size=strlen(szC);    strcpy(p+size,p+strlen(szB));    strncpy(p,szC,size);} 

热点排行