项目开发模型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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值