初学数据结构,简单的模式匹配,在使用上strlen时出现了一个内存错误,求各位帮我解决一下到底是怎么回事啊!谢谢
#include "stdio.h"#include "string.h"
/*void Get_next(char s[],int next) //求模串s的next函数以及得到next数组
{
int i,k,slen;
slen=strlen(s);
i=1;next[1]=0;k=0;
while(i<=slen)
{
if(k==0 || s[i]==s[k])
{
i++;
j++;
next[i]=k;
}
else
k=next[k];
}
}*/
int Index(char s[],char p[],int pos)//简单的模式匹配方法
{
int i=pos,j=0,slen,plen;
slen=strlen(s); //这老是报内存错误
plen=strlen(p);
while(i<slen || j<plen)
{
if(s[i]==p[j])
{
i++;
j++;
}
else
{
i=i-j+1;
j=0;
}
}
if(j>plen)
{
return 1;
}
else
return 0;
}
void main()
{
char *s,*p;
int index;
printf("Enter s:\n");
scanf("%s",&s);
printf("Enter p:\n");
scanf("%s",&p);
index=Index(s,p,3);
if(index==1)
{
printf("successed!\n");
}
else
printf("falure!\n");
}
刚学数据结构,在调试的时候slen=strlen(s); plen=strlen(p);//这老是报内存错误,是怎么回事啊??