字符串匹配问题????
typedef struct
{
char *ch;
int length;
}hstring;//堆分配
#include <iostream>
#include"struct.h"
using namespace std;
extern int strassign(hstring &t,char *chars);//赋值函数
extern void clearstring(hstring &s);
extern int index(hstring s,hstring t,int pos);//字符串匹配函数
int main()
{
hstring s1,s2;
s1.ch=0;
s2.ch=0;
if(strassign(s1,"sowkdjdls"))
cout<<s1.ch<<endl;
if(strassign(s2,"sow"))
cout<<s2.ch<<endl;
cout<<index(s1,s2,1);
return 0;
}
int index(hstring s,hstring t,int pos)
{
if(pos<1||pos+t.length-1>s.length)return 0;
hstring sub;
sub.ch=0
for(int i=pos-1;i+t.length<=s.length;++i)
{
if(!strcompare(t,substring(sub,s,i,t.length)))
return i+1;
}
}
hstring substring(hstring &sub,hstring s,int i,int m)
{
if(i+m-1<=s.length&&i>0&&m>0)
{
if(sub.ch)free(sub.ch);
if(sub.ch=(char*)malloc(sizeof(char)*(m+1)))
{
for(int j=0;j<=m-1;++j)
sub.ch[j]=s.ch[i+j];
sub.ch[j]=0;
sub.length=m;
}
}
return sub;
}
int strcompare(hstring s,hstring t)
{
for(int i=0;i<s.length&&i<t.length;++i)
if(s.ch[i]!=t.ch[i])
return s.ch[i]-t.ch[i];
return s.length-t.length;
}
程序的结果是0,但是按照算法来看,我觉得应该是1
输入asowkdjdls,sow 就变成2了,各位高手帮忙检查一下~~~~~~~~~~