(6) SubStr(s,i,j)返回串s中从第i(1<i<StrLength(s))个字符开始的由连续i个字符组成的子串SqString SubStr(SqString s, int i, int j)1SqString str;int k;str.len=O;if (i<=0 I i>s.len Il j<0 Il i+j-1>s.len)printf("参数不正确\n))return str;/*参数不正确时返回空串*/for(k-i-1;k<i+j-1;k++)/*将s.ch[i]~S.ch[i+j]复制到str*/str.ch[k-i+1]=S.ch[k];str.len=j;return str;16
16 (6) SubStr(s,i,j) 返回串s中从第i(1≤i≤StrLength(s))个字符开始的、 由连续j个字符组成的子串。 SqString SubStr(SqString s, int i, int j) { SqString str;int k;str.len=0; if (i<=0 || i>s.len || j<0 || i+j-1>s.len) { printf("参数不正确\n"); return str; /*参数不正确时返回空串*/ } for (k=i-1;k<i+j-1;k++) /*将s.ch[i]~s.ch[i+j]复制到str*/ str.ch[k-i+1]=s.ch[k]; str.len=j; return str; }
(7) InsStr(s1,i,s2)将串s2插入到串s1的第i个字符中,即将s2的第一个字符作为s1的第i个字符,并返回产生的新串SqString InsStr(SqString sl, int i, SqString s2)Yintj;SqStringstr; str.len=O;if(i<=0Ⅱi>sl.len+1)/*参数不正确时返回空串*/printf("参数不正确\n"))return str;
17 (7) InsStr(s1,i,s2) 将串s2插入到串s1的第i个字符中,即将s2的第一个 字符作为s1的第i个字符,并返回产生的新串。 SqString InsStr(SqString s1, int i, SqString s2) { int j; SqString str; str.len=0; if (i<=0 || i>s1.len+1) /*参数不正确时返回空串*/ { printf("参数不正确\n"); return str; }
for (j=-0;j<i-1;j++)/*将s1.ch[0]~s1.ch[i-2]复制到str*/str.ch[j]=sl.ch[i];for (j=0;j<s2.len;j++)/*将s2.ch[0] ~ s2.ch[s2.len-1]复制到str*|str.ch[i+j-1]=s2.ch[i] for (j=-i-l;j<s1.len;j++)/*将sl.ch[i-1]~s.ch[s1.len-1]复制到str*/str.ch[s2.len+j]=sl.ch[j];str.len=s1.len+s2.len;return str;18
18 for (j=0;j<i-1;j++) /*将s1.ch[0]~s1.ch[i-2]复制到str*/ str.ch[j]=s1.ch[j]; for (j=0;j<s2.len;j++) /*将s2.ch[0]~s2.ch[s2.len-1]复制到str*/ str.ch[i+j-1]=s2.ch[j]; for (j=i-1;j<s1.len;j++) /*将s1.ch[i-1]~s.ch[s1.len-1]复制到str*/ str.ch[s2.len+j]=s1.ch[j]; str.len=s1.len+s2.len; return str; }
(8) DelStr(s, i, j)从串s中删去第i(l≤i<StrLength(s))个字符开始的长度为的子串,并返回产生的新串SqString DelStr(SqString S, int i, int j)int k;SqString str;str.len=0;if (i<=0 Il i>s.len Il i+j>s.len+1)/*参数不正确时返回空串*/printf("参数不正确\n");return str;19
19 (8) DelStr(s, i, j) 从串s中删去第i(1≤i≤StrLength(s))个字符开始的长度 为j的子串,并返回产生的新串。 SqString DelStr(SqString s, int i, int j) { int k;SqString str; str.len=0; if (i<=0 || i>s.len || i+j>s.len+1) /*参数不正确时返回空串*/ { printf("参数不正确\n"); return str; }
for(k=0;k<i-1;k++)/*将s.ch[0] ~ S.ch[i-2]复制到str*/str.ch[k]=s.ch[k];for (k=i+j-1;k<s.len;k++)/*将s.ch[i+j-1] ~ ch[s.len-1]复制到str*/str.ch[k-j]=s.ch[k];str.len=s.len-j;return str;20
20 for (k=0;k<i-1;k++) /*将s.ch[0]~s.ch[i-2]复制到str*/ str.ch[k]=s.ch[k]; for (k=i+j-1;k<s.len;k++) /*将s.ch[i+j-1]~ch[s.len-1]复制到str*/ str.ch[k-j]=s.ch[k]; str.len=s.len-j; return str; }