如何从一个父串中找出子串的个数

题目要求:

输入一个父字符串,和一个子字符串,编写代码要求能够实现计算出父串中子串的个数,例如:输入父字符串“hello”,输入子字符串“ll”,输出结果为1。

代码如下:

#include 
#include 

void getSubCount(char *par,char *sub)
{
	int sub_len = strlen(sub);
	int count = 0;

	while (*par != '\0')
	{
		if (strncmp(par,sub,sub_len) == 0)
		{
			par = par + sub_len;
			count++;
		}
		else
		{
			par++;
		}
	}

	printf("count = %d\n",count);
}

int main()
{
	char par[100] = {0};
	char sub[100] = {0};

	printf("please input par string:\n");
	gets(par);

	printf("please input sub string:\n");
	gets(sub);

	getSubCount(par,sub);	

	return 0;
}
                                                                                                                                                            

总结:主函数中先定义2个字符数组(父串、子串),并输入父串、子串,然后调用自定义函数;在自定义函数中,通过循环对父串进行遍历,依次与子串比较,来获得子串数目。

注意事项:

①strncmp(par,sub,sub_len) 的意思是连续比较par、sub之后的sub字符串长度的字符;值若等于零,则说明连续sub字符串长度的字符是相等的。

② par = par + sub_len 不能缺少;否则会造成子串数目计数过多,例如父串aaaaaa,子串aa,没有此句的话,count = 5,加了之后count = 3。

你可能感兴趣的:(如何从一个父串中找出子串的个数)