统计s2字符串在s1字符串出现的次数



//JZG 2014-1-25

/*程序功能:统计s2字符串在s1字符串出现的次数

注意点:char *pt;
cout<<pt<<endl;该句会输出以pt所指向的地址开始的内容,
直到遇到字符串结束符,而不是输出一个地址。
char ch;
char *pt;
ch=*pt;//将pt所指向的地址的内容赋给字符变量ch,“*pt”取得内容
*/
#include "stdafx.h"
#include <string.h>
#include <iostream>

using namespace std;

int fun(char* s1,char *s2)
{
	int i(0),j(0),n(0),s1_len(0),s2_len(0);
	char *pti;  //定义一个指针,记录进入j循环的时候s1[i]的地址
	s1_len=strlen(s1);
	s2_len=strlen(s2);

	for(i=0;i<s1_len;i++)
	{
		pti=&s1[i];  //取得此时s1[i]的地址
		for(j=0;j<s2_len;j++)
		{
			if(*pti!=s2[j])break;  //如果pti所指向的地址的内容与字符s2[j]不相等
			pti++;  //指针后移
			if(j==s2_len-1)n++;  //s2所有字符与s1中从&s1[i]开始的字符匹配完毕		
		}
	}
	return n;

}

int _tmain(int argc, _TCHAR* argv[])
{
	char s1[1024];
	char s2[512];
	for(;;)
	{
	cout<<"输入s1"<<endl;
	cin.getline(s1,1024);
	cout<<"输入s2"<<endl;
	cin.getline(s2,512);
	cout<<"s2在s1中出现的次数:"<<fun(s1,s2)<<"\n\n\n";
	}
	return 0;

}



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值