找出字符串中子串的出现次数 C语言实现

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

void  findchar(char* str,char *sub,int *count)
{
	char *temp1,*temp2;
	char *temp3;
	int cnt=0;
	temp1=str;
	temp2=sub;
	while(*temp1)            //如果没有到字符串尾
	{
		if(*temp2==*temp1)   //如果与子串第一个字符相等,进行下一步的比较
		{
			temp3=temp1;                
			while(*temp2)        //如果子串没有到结尾
			{
				if(*temp2++==*temp3++)
					continue;
				else             //说明匹配失败,重新让temp2指向子串首地址
				{
					temp2=sub;
					break;
				}
			}
		}
			if(!*temp2)           //如果*tmep2为0,则说明成功匹配一次
			{
				temp2=sub;        //重新置为子串的首地址
				cnt++;               //计数变量加1
				temp1+=strlen(sub);   //temp1增加子串长度
			}
			else                     //说明匹配失败,temp跳1个长度
				temp1++;
	}
		*count = cnt;               //返回次数结果
}

int main()
{
	char a[]="abcd13123ab324abc9012abc";
	char b[]="abc";
	int cnt=0;
	findchar(a,b,&cnt);
	printf("%d",cnt);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值