项目开发模型strstr-do-while和while模型——20200207

1、strstr是C语言中的函数,作用是返回字符串中首次出现子串的地址。

extern char *strstr(char *str1, const char *str2);

str1: 被查找目标 string expression to search.

str2: 要查找对象 The string expression to find.

返回值:若str2是str1的子串,则返回str2在str1的首次出现的地址;如果str2不是str1的子串,则返回NULL。

2、代码如下:查找子字符串“abcd”在字符串中的个数并打印结果。

#define  _CRT_SECURE_NO_WARNINGS 
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

int getstrCount(char* str1, char* str2, int* nCount)
{
	int ret = 0;
	int ncount = 0;
	char* p1 = str1;
	char* p2 = str2;
	if (str1 == NULL || str2 == NULL)
	{
		ret = -1;
		printf("func error:%d\n", ret);
		return ret;
	}
	do
	{
		p1 = strstr(p1, p2);
		if (p1 != NULL)
		{
			ncount++;
			p1 = p1 + strlen(str2);
		}
		else
		{
			break;
		}
	} while (*p1 != '\0');
	*nCount = ncount;
	return ret;
}

int main()
{
	int ret = 0;
	int nCount = 0;
	char src[] = "1abcd2abcd3abcd4abcd0zds5abcd";
	char obj[] = "abcd";
	ret = getstrCount(src, obj, &nCount);
	if (ret != 0)
	{
		printf("func ret error\n");
	}
	printf("nCount=%d\n",nCount);
	system("pause");
	return 0;
}

3、运行结果如下:

4、strstr-while模型

#define  _CRT_SECURE_NO_WARNINGS 
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

int getStrCountnum(char* str1, char* str2, int* ncount)
{
	int ret = 0;
	int nCount = 0;
	char* p1 = str1;
	char* p2 = str2;
	if (str1 == NULL || str2 == NULL)
	{
		ret = -1;
		printf("func error:%d\n", ret);
		return ret;
	}
	while (p1 = strstr(p1, p2))
	{
		p1 = p1 + strlen(p2);
		nCount++;
	}
	*ncount = nCount;

	return ret;
}

int main()
{
	int ret = 0;
	int ncount = 0;
	char buf[] = "1abcd2abcd3abcd4abcdyurte5abcd";
	char obj[] = "abcd";
	ret = getStrCountnum(buf, obj, &ncount);
	if (ret != 0)
	{
		printf("func error \n");
	}
	printf("ncount=%d\n", ncount);
	system("pause");
	return 0;
}
发布了140 篇原创文章 · 获赞 26 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_41211961/article/details/104217343
今日推荐