例如,假定输入的字符串为“asd asasdfg asd as zx67 asd mklo”,子字符串为as,则输出结果6。
第1个回答 2008-11-10
/*TC2编译通过*/
/*该实现基于子串在主串各个位置出现的几率相等,自左向右匹配*/
/*是基础的模式匹配算法,有关改进算法,可以参考网络*/
/*如果子串出现在主串前部的几率较大或其他其它情况,应作相应改进*/
#include<stdio.h>
#include<conio.h>
#include<string.h>
#define arraysize 64
int cont_str_contain_str(char *str,char *substr)
{
int i;
int Len;
char *strend;
Len=strlen(substr);
strend=str+strlen(str)-1;
for(i=0;str<strend;i++)
{
str=strstr(str,substr);
if(!str) break;
str+=Len;
}
return i;
}
main()
{
int count;
char s1[arraysize],s2[arraysize];
clrscr();
printf("string;");scanf("%s",s1);
printf("substring;");scanf("%s",s2);
count=cont_str_contain_str(s1,s2);
printf("\n%d",count);
getch();
}
/*该实现基于子串在主串各个位置出现的几率相等,自左向右匹配*/
/*是基础的模式匹配算法,有关改进算法,可以参考网络*/
/*如果子串出现在主串前部的几率较大或其他其它情况,应作相应改进*/
#include<stdio.h>
#include<conio.h>
#include<string.h>
#define arraysize 64
int cont_str_contain_str(char *str,char *substr)
{
int i;
int Len;
char *strend;
Len=strlen(substr);
strend=str+strlen(str)-1;
for(i=0;str<strend;i++)
{
str=strstr(str,substr);
if(!str) break;
str+=Len;
}
return i;
}
main()
{
int count;
char s1[arraysize],s2[arraysize];
clrscr();
printf("string;");scanf("%s",s1);
printf("substring;");scanf("%s",s2);
count=cont_str_contain_str(s1,s2);
printf("\n%d",count);
getch();
}