编辑代码

#include <stdio.h>
#define MAXLEN 100
typedef struct {
    char ch[MAXLEN];
    int len;
} SString;
// 字符串连接操作
SString StrConcat(SString s, SString t)
{
    SString s1;
    int i;
    if(s.len + t.len <= MAXLEN)
    {   for(i = 0; i < s.len; i++)
            s1.ch[i] = s.ch[i];
        for(i = 0; i < t.len; i++)
            s1.ch[s.len + i] = t.ch[i];
        s1.ch[s1.len] = '\0';
        s1.len =s.len+t.len;
    }
    else
        s1.len=0;
        return(s1);
}
// 字符串比较操作
int StrCompare(SString s, SString t)
{
    int i;
    if(s.len!= t.len)
        return (0);
    else
    {    for(i = 0; i < s.len; i++)
        {
            if(s.ch[i]!= t.ch[i])
                return (0);
        }
    }
        return (1);
    
}
// 取子串操作
int SubString(SString sub, SString s, int pos, int len)
{    int i;
    if((pos < 0) || (pos >= s.len) || (len < 0) || (len > s.len - pos))
        return (0);
    else
    {
        for(i = 0; i < len; i++)
            sub-ch[i] = s.ch[i+pos-1];
        sub->len = len;
        return (1);
    }
}
// 字符串插入操作
void StrInsert(SString *s, SString t, int pos)
{    int j;
    if(s->len + t.len) >= MAXLEN || (pos >s->len+1) || (pos <1))
    printf("overflow\n");
    else
    {
        for(j = s->len ; j >= pos; i--)
            s->ch[j + t.len-1] = s->ch[j-1];
        for(j = 0; j < t.len; j++)
            s->ch[j +pos-1] = t.ch[j];
        s->len = s->len + t.len;
        s->ch[s->len] = '\0'
    }
}
// 串删除操作
void StrDelete(SString *s, int pos, int len)
{
    int k;
    if((pos < 1) || (pos > s->len) || (len < 0) || (len > s->len - pos))
        printf("error\n");
    else
    {
        if( s->len - pos+1<len)
            s->len=pos-1;
    else
    {
        for(k=pos+len-1;k<=s->len;k++)
        s->ch[k-len]=s->ch[k];
        s->len=s->len-len;
    }
    }
}
// 串置换函数
String StrReplace(SString *s, SString t, int pos, int len)
{
    StrDelete(s, pos, len);
    StrInsert(s, t, pos);
}
// 子串定位操作
int StrIndex(SString s, SString t)
{   int i, j;
    i = 0;
    j = 0;
    while((i < =s.len-1) && (j <= t.len-1))
        if(s.ch[i] == t.ch[j])
        {
            i++;
            j++;
        }
        else
        { i = i - j + 1; 
        j = 0;
        }
    }
    if(j > t.len-1)
        return (i - t.len + 1);
    else
        return (0);
}