回复 16楼 棉雨
不好意思 很久没上了 我给你改了下 你先自己想想 还不清楚的话再说吧
#include"iostream"
#define Max 256
using namespace std;
typedef struct
{
char ch[Max];
int lenght;
}
SeqString;
void InitString(SeqString *s)
{
char ch;
int i=0;
while((ch=getchar())!='\n'&&i<Max)
s->ch[i++]=ch;
s->lenght=i;
}
int Strlen(SeqString *s)
{
return (s->lenght);
}
SeqString *substr(SeqString *s,int pos,int len,SeqString *sub)
{
int i;
if(pos<1||pos>s->lenght||len<1||len>s->lenght)
{
cout<<"error!!"<<endl;
return NULL;
}
for(i=0;i<len;i++)
sub->ch[i]=s->ch[pos+i-1];
sub->lenght=len;
return (sub);
}
int strcmp(SeqString *s,SeqString *t)
{
int i,j;
for(i=0,j=0;i<s->lenght,j<t->lenght;)
{
if(s->ch[i]==t->ch[j])
{
i++;
j++;
}
else
{
i++;
}
}
return (i-t->lenght+1);
}
void main()
{
int i,k;
SeqString s,t,r;
cout<<"构造一个串s!!"<<endl;
InitString(&s);
cout<<"构造一个串t!!"<<endl;
InitString(&t);
cout<<"请输入子串在主串中位置:";
cin>>i;
if(s.ch[i-1]!=t.ch[0])
{
cout<<endl<<"位置错误! 输出的是错误数据!!"<<endl;}
k=strcmp(&s,substr(&s,i,Strlen(&t),&r));
cout<<k<<endl;
}