。。这段代码到底错在哪儿了。 调N小时了。。

lin_style 2006-09-25 12:48:49
void main(){
char *a="lin";

replace_char(a,"li","nn");
cout<<a;




}

void replace_char(char *str1,const char *str2,const char *str3){
//..异常处理

int len_str2=strlen(str2);
int len_str3=strlen(str3);
int len_cyc=(strlen(str1)-strlen(str2))+1;
char *str=new char [len_str2+1];
int x=0;


for(int i=0; i<len_cyc ;i++){


for(int j=i;j<len_str2+i;j++){

*(str+(x++))=*(str1+j);
cout<<"str "<<str<<endl
<<"str1 "<<str1<<endl;

}
*(str+(x++))='\0';
x=0;

if (!strcmp(str,str2))

for(int k=i;k<len_str3;k++){
*(str1+k)=*(str3+(x++));
*(str+(x++))=NULL;
}

x=0;

}


}

...全文
219 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin_style 2006-09-25
  • 打赏
  • 举报
回复
如果是这样

char str[]="abccdddrfffaff";
char const *str1="bc";
char const *str2="gggg";

jixingzhong(瞌睡虫:选择了远方,只顾风雨兼程!) 前辈,代码有问题哦。
成 aggggddrfffaff,d给吃掉了。
lin_style 2006-09-25
  • 打赏
  • 举报
回复
为什么这个字符指针P不分配空间, 直接*p++ = *repStr++;?
jixingzhong 2006-09-25
  • 打赏
  • 举报
回复
寻找子串并替换:

void ReplaceStr(char *srcStr,const char *subStr,const char *repStr)
{
assert(srcStr&&subStr&&repStr);
char *p;
p = strstr(srcStr, subStr);
if(p != NULL)
{
while(*repStr != '\0')*p++ = *repStr++;
}
}

int main(int argc, char* argv[])
{
char str[]="abccdddrfffaff";
char const *str1="ffff";
char const *str2="gggg";
ReplaceStr(str,str1,str2);
puts(str);
getch();
return 0;
}
jixingzhong 2006-09-25
  • 打赏
  • 举报
回复
*(str1+k)=*(str3+(x++));
*(str+(x++))=NULL;

x++ 两次?
JFDream_15 2006-09-25
  • 打赏
  • 举报
回复
4.
for(int i=0; i<len_cyc ;i++){


for(int j=i;j<len_str2+i;j++){

*(str+(x++))=*(str1+j);
cout<<"str "<<str<<endl
<<"str1 "<<str1<<endl;

}
*(str+(x++))='\0';//这里还会出现地址越界访问.
x=0;
JFDream_15 2006-09-25
  • 打赏
  • 举报
回复
3.在replace_char函数中new了的内存没有释放.
JFDream_15 2006-09-25
  • 打赏
  • 举报
回复
1.没有包含头文件.

2.replace_char函数没有声明.

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧