编辑代码

#include <stdio.h>
#include <string.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.len = s.len + t.len;
        s1.ch[s1.len] = '\0';  // 以null结尾
    } else {
        s1.len = 0;  // 超过最大长度,返回空字符串
    }
    return s1;
}

// 字符串比较
int StrCompare(SString s, SString t) {
    if (s.len != t.len)
        return 0;
    for (int 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) {
    if (pos < 1 || pos > s.len || len < 1 || len > s.len - pos + 1) {
        sub->len = 0;
        return 0;
    } else {
        for (int i = 0; i < len; i++)
            sub->ch[i] = s.ch[pos - 1 + i];
        sub->len = len;
        sub->ch[len] = '\0';  // 以null结尾
        return 1;
    }
}

// 字符串插入
void StrCharu(SString *s, SString t, int pos) {
    if (s->len + t.len >= MAXLEN || pos < 1 || pos > s->len + 1) {
        printf("插入失败\n");
        return;
    }
    for (int j = s->len; j >= pos; j--)
        s->ch[j + t.len - 1] = s->ch[j - 1];
    for (int j = 0; j < t.len; j++)
        s->ch[j + pos - 1] = t.ch[j];
    s->len += t.len;
    s->ch[s->len] = '\0';  // 以null结尾
}

// 字符串删除
void StrShanchu(SString *s, int pos, int len) {
    if (pos < 1 || pos > s->len) {
        printf("错误\n");
        return;
    }
    if (s->len - pos + 1 < len) {
        s->len = pos - 1;  // 删除到末尾
    } else {
        for (int k = pos + len - 1; k < s->len; k++)
            s->ch[k - len] = s->ch[k];
        s->len -= len;
    }
    s->ch[s->len] = '\0';  // 以null结尾
}

// 字符串替换
SString StrTihuan(SString *s, SString t, int pos, int len) {
    StrShanchu(s, pos, len);
    StrCharu(s, t, pos);
    return *s;  // 返回修改后的字符串
}

int main() {
    // 示例代码可以在这里添加以测试上述功能
    return 0;
}