m0_57934880 2021-05-16 17:10 采纳率: 100%
浏览 66
已采纳

简单的C语言字符串给oj作业通过的代码采纳

Problem 1 编写函数FindReplaceStr,其功能是从左到右地、不相交地、不递归地(参考示例)将字符串str中的所有子串find_str都替换成字符串replace_str(其长度与find_str的长度不一定相等),返回值为替换的次数,其原型为: int FindReplaceStr(char str[], const char find_str[], const char replace_str[]); 并在主函数中调用它处理输入。 输入、替换结果中的每个字符串的长度都不会超过99。 其实这就是各种文本编辑器中的“全部替换”功能。 请小心处理空白符。 字符串库函数可用列表: strlen() 注意:禁用STL。 input: 三个字符串,分别以换行符结束(换行符不计入字符串)。 output: 第一行:替换后的字符串; 第二行:替换次数。 input: ababa aba c output: cba 1 input: ababa aba ba output: baba 1

  • 写回答

2条回答 默认 最新

  • qfl_sdu 2021-05-16 17:47
    关注

    代码如下,如有帮助,请采纳一下,谢谢。

    #include <stdio.h>
    #include <string>
    using namespace std;
    
     int FindReplaceStr(char str[], const char find_str[], const char replace_str[])
     {
    	 string s = str;
    	 int lenFind = strlen(find_str);  //需要被替换的字符串的长度
    	 int index = s.find(find_str);
    	 int tms = 0;
    	 while ( index >= 0 && index < s.length()-3)
    	 {
    		 tms++;
    		 string s1 = s.substr(0,index);
    		 string s2 = s.substr(index + lenFind,s.length() - index  - lenFind );
    		 s = s1 + replace_str + s2;
    		 index = s.find(find_str);
    	 }
    	 printf("替换后的字符串:%s\n",s.c_str());
    	 printf("替换次数:%d\n",tms);
    	 return tms;
     }
    
     int main()
     {
    	 char buf[100] = {0};
    	 char findstr[99] = {0};
    	 char rpstr[99] = {0};
    	 printf("请输入原始字符串:");
    	 gets(buf);
    	 printf("请输入查找字符串:");
    	 gets(findstr);
    	 printf("请输入替换字符串:");
    	 gets(rpstr);
    
    	 int tms = FindReplaceStr(buf,findstr,rpstr);
    
    	 
    	 
    	 getchar();
    	 getchar();
    	 return 0;
    
     }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大