字符串的插入操作
#define MAXLEN 50
typedef struct
{
char ch[MAXLEN]; /*串结构定义*/
int len;
}SString;
//顺序串插入函数
int StrInsert(SString *s,int pos, SString t)
//在串s中下标为pos的字符之前插入串
//字符串的特殊地方是下标必须是0开始
{
int i;
if(pos<0 || pos>s->len) return -1; //插入位置不合法
if(s->len+t.len <= MAXLEN) //插入后串长<=MAXLEN
{
for(i=s->len+t.len-1;i>=t.len+pos;i--) //从插入的位置往后移
s->ch[i]=s->ch[i-t.len];
for(i=0;i<t.len;i++) s->ch[i+pos]=t.ch[i]; //新的字符串插入
s->len=s->len+t.len;
}
else if(pos+t.len<=MAXLEN) //插入后串长>MAXLEN.但串t的字符序列可以全部插入
{
for(i=MAXLEN-1;i>t.len+pos-1;i--) s->ch[i]=s->ch[i-t.len]; //确定了尾部,从最尾开始往后移,移完再插入
for(i=0;i<t.len;i++) s->ch[i+pos]=t.ch[i];
s->len = MAXLEN;
}
else //插入后串长>MAXLEN,并且串t的部分字符也要舍弃
//从尾部开始,不用移直接插入就好
{
for(i=0;i<MAXLEN-pos;i++) s->ch[i+pos]=t.ch[i];
s->len=MAXLEN;
}
return 1;
}