#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 100
typedef struct
{
char *p;
int length;
}sstring;
void getsstring(sstring &s)//这个输入函数的书写针对一个函数时还可以。不可以两个函数 ,针对字符数组出错了,不知道为什么
//z这种用for循环语句来输入不知道哪里出错,看一下一下子输入;
//利用定义一个变量利用strcpy函数的方法失败了,失败原因从char到char*的转变无效;
{
int i;
int n;
char cc;
s.p=(char *)malloc(sizeof(char)*100);
if(!s.p)
{
printf("分配空间失败\n");
exit (0);
}
// printf("请输入字符数组的长度\n");
// scanf("%d",&s.length);
// printf("请输入%d个字符\n",s.length);
// for(i=0;i<s.length;i++)
// scanf("%c",&s.p[i]);
//printf("请输入字符数组s的值");//这种方法是错误的
// scanf("%s",&cc);
//strcpy(s.p,cc);
printf("请输入字符数组的值");//要求必须length已知,这种方法虽然输入可以,但是长度未知
gets(s.p);
}
int index(sstring s,sstring t,int pos)//要求必须length已知
{
int i,j;
i=0;j=0;
t.length=strlen(t.p);
s.length=strlen(s.p);
while(i<=s.length-1&&j<=t.length-1)//并且
{
if(s.p[i]==t.p[j])
{
++i;++j;
}
else
{
i=i-j+2;j=0;}
}
if(j>t.length-1)
{
return i-t.length+1;}
else
{
return -1;}
}
int main()
{
int n;
int jj;
int pos;
sstring c;
sstring t;
pos=0;
printf("请输入c的字符\n");
getsstring(c);
printf("\n");
printf("请输入t的字符\n");
getsstring(t);
jj=index(c,t,pos);
printf("这是bf算法得到的值\n");
printf("%d",jj);
return 0;
}
bf算法的自己思考
最新推荐文章于 2024-07-24 06:12:13 发布