删除字符串中所有给定的子串---已测试

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1. 删除字符串中所有给定的子串(40分)

问题描述:

在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。要求实现函数:

int delete_sub_str(const char *str, const char *sub_str, char *result_str)

【输入】str:输入的被操作字符串

sub_str:需要查找并删除的特定子字符串

【输出】result_str:在str字符串中删除所有sub_str子字符串后的结果

【返回】删除的子字符串的个数

注:

I、子串匹配只考虑最左匹配情况,即只需要从左到右进行字串匹配的情况。比如:在字符串"abababab"中,采用最左匹配子串"aba",可以匹配2个"aba"字串。如果

匹配出从左到右位置2开始的"aba",则不是最左匹配,且只能匹配出1个"aba"字串。II、输入字符串不会超过100 Bytes,请不用考虑超长字符串的情况。

示例

输入:str = "abcde123abcd123"

sub_str = "123"

输出:result_str = "abcdeabcd"

返回:2

输入:str = "abcde123abcd123"

sub_str = "1234"

输出result_str = "abcde123abcd123"

返回:0

view plaincopy to clipboardprint?

01.#include

02.#include

03.#include

04.

05./*删除字串函数,在src中删除sub子串,并将结果保存在result字符串中*/

06.int delSubStr(char * src,char * sub,char * result)

07.{

08. char * src_p=src;

09. char * sub_p=sub;

10. char * res_p=result;

11. int count=0;//记录包含子串的个数

12. int sub_len=strlen(sub);//记录子串的长度

13. char * temp;//临时保存子串的副本

14. temp=(char *)malloc(sub_len+1);

15. memset(temp,'\0',sub_len+1);

16. while(*src_p)

17. {

18. memcpy(temp,src_p,sub_len);

19.

20. /*原串中包含与sub完全匹配的子串*/

21. if(!strcmp(temp,sub))

22. {

23. count++;

24. src_p+=sub_len;

25. }

26. else

27. *res_p++=*src_p++;

28. *res_p='\0';

29. free(temp);

30. return count;//返回包含子串的个数

31.}

32.

33.void main()

34.{

35. char result[100];

36. int count=delSubStr("abcdefgde","de",result);

37. printf("The new string is:");

38. printf("%s\n",result);

39. printf("count is:");

40. printf("%d\n",count);

41.}

相关文档
最新文档