//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;
}
统计s2字符串在s1字符串出现的次数
最新推荐文章于 2024-08-20 11:20:49 发布