1. 程式人生 > >如何從一個父串中找出子串的個數

如何從一個父串中找出子串的個數

題目要求:

輸入一個父字串,和一個子字串,編寫程式碼要求能夠實現計算出父串中子串的個數,例如:輸入父字串“hello”,輸入子字串“ll”,輸出結果為1。

程式碼如下:

#include <stdio.h>
#include <string.h>

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。