字符串匹配问题????

nandizhu 2008-02-27 11:43:43
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了,各位高手帮忙检查一下~~~~~~~~~~
...全文
49 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
0黄瓜0 2008-02-27
  • 打赏
  • 举报
回复
程序是调试出来的,慢慢的调试吧. 贴代码你又没贴完,想帮你调试下都不行.另外,希望按代码格式贴代码,不要贴得乱糟糟的. 复制到编辑器都还要慢慢的改csdn加的空格.

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧