#define MaxSize 100
#include<stdio.h>
#include<string.h>
typedef struct
{
char data[MaxSize];
int length;
}SqString;
//串赋值
void Assign(SqString &s,char str[ ])
{
int i=0;
while(str[i]!='\0')
{
s.data[i]=str[i];
i++;
}
s.length=i;
}
//销毁串
void DestroyStr(SqString s)
{}
//串复制
void StrCopy(SqString &s,SqString t)
{
int i;
for(i=0;i<t.length;i++)
{
s.data[i]=t.data[i];
}
s.length=t.length;
}
//求串的长度
int StrLength(SqString s)
{
return(s.length);
}
//判断串相等
int StrEqual(SqString s,SqString t)
{
int i;
if(s.length!=t.length)
return 0;
else
{
for(i=0;i<s.length;i++)
if(s.data[i]!=t.data[i])
return 0;
return 1;
}
}
//串连接
SqString Concat(SqString s,SqString t)
{
SqString r;
int i,j;
for(i=0;i<s.length;i++)
r.data[i]=s.data[i];
for(j=0;j<t.length;j++)
r.data[s.length+j]=t.data[j];
r.length=i+j;
return r;
}
//求子串
SqString SubStr(SqString s,int i,int j)
{
SqString t;
int k;
if(i<1||i>s.length||j<1||i+j>s.length+1)
t.length=0;
else
{
for(k=i-1;k<i+j;k++)
t.data[k-i+1]=s.data[k];
t.length=j;
}
return t;
}
//查找子串位置
int Index(SqString s,SqString t)
{
int i=0,j=0;
while(i<s.length&&j<t.length)
{
if(s.data[i]==t.data[i])
{
i++;
j++;
}
else
{
i=i-j+1;
j=0;
}
}
if(j>=t.length)
return i-t.length+1;
else
return 0;
}
//子串插入
int InsStr(SqString &s,int i,SqString t)
{
int j;
if(i<1||i>s.length)
return 0;
else
{
for(j=s.length-1;j>=i-1;j--)
s.data[j+t.length]=s.data[j];
for(j=0;j<t.length;j++)
s.data[i+j-1]=t.data[j];
s.length=s.length+t.length;
return 1;
}
}
//字串删除
int DelStr(SqString &s,int i,int j)
{
int k;
if(i<1||i>s.length||j<1||i+j>s.length+1)
return 0;
else
{
for(k=i+j-1;k<s.length;k++)
s.data[k-j]=s.data[k];
s.length=s.length-j;
return 1;
}
}
//字串替换
SqString RepStr(SqString s,SqString s1,SqString s2)
{
int i;
i=Index(s,s1);
while(i>0)
{
DelStr(s,i,s1.length);
InsStr(s,i,s2);
i=Index(s,s1);
}
return s;
}
//输出串
void DispStr(SqString s)
{
int i;
for(i=0;i<s.length;i++)
printf("%c",s.data[i]);
printf("\n");
}
int main()
{
SqString s1,s2,s3,s4,s5,s6,s7;
Assign(s1,"abcd");
printf("s1:");
DispStr(s1);
printf("s1的长度:%d\n",StrLength(s1));
printf("s1=>s2\n");
StrCopy(s2,s1);
printf("s2:");
DispStr(s2);
printf("s1和s2%s\n",(StrEqual(s1,s2)==1?"相同":"不相同"));
Assign(s3,"12345678");
printf("s3:");
DispStr(s3);
printf("s1和s3连接=>s4\n");
s4=Concat(s1,s3);
printf("s4:");
DispStr(s4);
printf("s3[2..5]=>s5\n");
s5=SubStr(s3,2,4);
printf("s5:");
DispStr(s5);
Assign(s6,"567");
printf("s6:");
DispStr(s6);
printf("s6在s3中的位置:%d\n",Index(s3,s6));
printf("从3中删除s3[3..6]字符\n");
DelStr(s3,3,4);
printf("s3:");
DispStr(s3);
printf("从s4中将s6替换成s1=>s7\n");
s7=RepStr(s4,s6,s1);
printf("s7:");
DispStr(s7);
DestroyStr(s1);
DestroyStr(s2);
DestroyStr(s3);
DestroyStr(s4);
DestroyStr(s5);
DestroyStr(s6);
DestroyStr(s7);
}

应该怎么改呢
