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

字符串替换的有关问题!

2012-03-06 
字符串替换的问题!求助!#includeiostreamusingnamespacestdchar*Replace(char*source,char*substr,char

字符串替换的问题!求助!
#include   <iostream>

using   namespace   std;

char   *   Replace(char   *source,   char   *substr,   char   *newstr)
{
    char   *p   =   strstr(source,substr);
    if(p   !=   NULL)
    {
    char   *result   =   new   char   [];
            strncpy(result,source,p-source);
            strcat(result,newstr);
            char   *p2;
            p=p+strlen(substr);     //使p相当于source
            p2=strstr(p,substr);     //p2为子串位置,开始循环
            while(p2!=NULL)  
    {
    strncat(result,p,p2-p);
            strcat(result,newstr);
            p=p2+strlen(substr);     //
            p2=strstr(p,substr);       //
    }
            strcat(result,p);
            return   result;
    }
    else   return   source;
}
void   main()
{
char   source[]= "wjinwei   king   jinwei   kk ";
char   substr[]= "jinwei ";
char   newstr[]= "aaa ";
        char   *   result   =   Replace(source,substr,newstr);
cout < <result < <endl;
}
运行结果有乱码,我想要的结果是:waaa   king   aaa   kk(用新串替换原字符串的所有子串)

[解决办法]
char *result = new char [];//未初始化,内容并不为空,\0并不是在最开始,是乱码的产生原因。

//加入下面的初始化结果就OK了- -;
while (*result)
{
*result++ = '\0 ';
}
strncpy(result,source,p-source);copy之后并未产生\0。
strcat(result,newstr);从result的结束位置,即未初始化内容的结束位置开始连接的


char * __cdecl strcat (
char * dst,
const char * src
)
{
char * cp = dst;

while( *cp )
cp++; /* find end of dst */

while( *cp++ = *src++ ) ; /* Copy src to end of dst */

return( dst ); /* return dst */

}

热点排行