不调用库函数实现对字符串的替换问题

DYf3244 2020-03-23 03:39:13
一个作业,通过题目给好的函数原型构造功能。但是我写出来的总有一点问题,能帮忙看看哪里不对嘛 int str_replace(const char* in, char* out, int outlen, const char* oldstr, const char* newstr) { int len_in = 0;//原字符串指针 int len_out = 0;//现在字符串指针 int counts = 0;//替换次数 int len_new = 0;//新字符串长度 for (; *(newstr + len_new) != '\0'; len_new++) ;//求新字符串长度 char str[outlen];//输出字符串数组 while (len_out < outlen - 1) { if (*(in + len_in) == '\0') break;//原字符串指向空的时候结束 if (*(in + len_in) != *oldstr || len_out + len_new >= outlen - 1) {//搜索不到要替换的字符串或者输出长度不允许再被代替 str[len_out] = *(in + len_in); len_in++; len_out++; continue; } else { int i; for (i = 1; *(oldstr + i) != '\0'; i++) if (*(in + len_in + i) != *(oldstr + i)) break;//判断接下来的几个字符是不是匹配 if (*(oldstr + i) == '\0') {//要替换字符串被匹配完,可以替换 counts++; len_in += i;//忽略被替换的部分 for (int j = 0; j < len_new; j++) { str[len_out++] = *(newstr + j); } } else { str[len_out] = *(in + len_in); len_in++; len_out++; } } } str[len_out] = '\0'; out = str; return counts; } 没办法给main函数,就是看看传参后怎么去实现这个功能,返回替换次数,并修改out指针。我这个写法可能还面临超时
...全文
335 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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