每日一算法:字符串的替换

举报
悦来客栈的老板 发表于 2020/12/28 23:25:48 2020/12/28
【摘要】 #include <stdio.h>#include <string.h> void replace(char string[], char key[], char swap[]){ int stringlen,keylen,swaplen,i,j,flag; char temp[1001]; //开辟一个能够容纳最长字符串的数组 stringle...

   
  1. #include <stdio.h>
  2. #include <string.h>
  3. void replace(char string[], char key[], char swap[])
  4. {
  5. int stringlen,keylen,swaplen,i,j,flag;
  6. char temp[1001]; //开辟一个能够容纳最长字符串的数组
  7. stringlen = strlen(string);
  8. keylen = strlen(key);
  9. swaplen = strlen(swap);
  10. for (i=0; i<= stringlen-keylen; i++)
  11. {
  12. flag = 1;
  13. for (j=0; j<keylen; j++)
  14. {
  15. if (string[i+j] != key[j])
  16. {//如果当前不是要替换的字串,则转到第一个for循环,指向下一个字符
  17. flag = 0;
  18. break;
  19. }
  20. }
  21. if (flag)
  22. {//如果找到要替换的字符串
  23. strcpy(temp, string); //字符串全部复制到temp数组
  24. strcpy(&temp[i],swap);//将swap字符串复制到当前i处,即被替换字符串的第一个字符在string的位置处
  25. strcpy(&temp[i+swaplen],&string[i+keylen]); //然后再将string中被替换字符串后面的字符复制到已经替换字符串的后面
  26. strcpy(string,temp);//再将temp复制给string
  27. i += swaplen-1;//i指向被替换后的下一个字符更新字符串
  28. stringlen = strlen(string);//更新字符串长度
  29. }
  30. }
  31. }
  32. int main(void)
  33. {
  34. char str[1001];
  35. char key[] = "you";
  36. char swap[] = "we";//将字符串str里面的you子串替换为we
  37. while (gets(str) != NULL)
  38. {
  39. replace(str,key,swap);
  40. printf("%s\n",str);
  41. }
  42. return 0;
  43. }

文章来源: blog.csdn.net,作者:悦来客栈的老板,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq523176585/article/details/13817853

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。