`
kennethf6986
  • 浏览: 69248 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

面试题目之删除字符串

阅读更多
问题描述:
在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。

要求实现函数:
int delete_sub_str(const char *str, const char *sub_str, char *result_str)

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

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

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

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

#include "stdio.h"
#include "conio.h"
#include "string.h"
#include   <stdlib.h>  

void main()
{
	int delSubStr(char * src,char * sub,char * result);

	char *srcstr = "abcdefgde";
	char *subp = "de"; 
	char resp[100];
	int count;

	count =  delSubStr(srcstr, subp, resp);

	printf("删除的子串的个数: %d\n", count);
	printf("原来的字符串    : %s\n", srcstr);
	printf("删除后的字符串:: %s\n", resp);

}

/*删除字串函数,在src中删除sub子串,并将结果保存在result字符串中*/
int delSubStr(char * src,char * sub,char * result)
{
	char *src_p = src;
	char *sub_p = sub;
	char *res_p = result;

	int count = 0; //记录包含子串的个数
	int sub_len = strlen(sub); //记录子串的长度
	char *temp; //临时保存子串的副本

	temp = (char*)malloc(sub_len + 1);
	memset(temp,'\0',sub_len+1);

	while (*src_p)
	{
		memcpy(temp,src_p, sub_len);
		//printf("temp--sub:%s--%s:\n", temp,sub_p);
		/*原串中包含与sub完全匹配的子串*/
		if( !strcmp(temp, sub_p) )
		{
			count++;
			src_p+=sub_len;
		}else
		{
			*res_p++ = *src_p++;
		}
	}
	*res_p='\0';
	free(temp);
	return count;
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics