C中的字符串追加函数

问题描述

我想创建一个字符串追加函数,但是当我想打印该函数时它崩溃了。我调试了它,但我找不到可能是什么问题。

struct string {
    size_t length;
    size_t allocated;
    char* data;
};
string* Init(char* str) {
    string* s = malloc(sizeof(string));
    size_t strLen = strlen(str);
    s->data = (char*)malloc(strLen*2); //allocate 2x of the length
    memcpy(s->data,str,strLen);
    s->data[strLen] = '\0';
    s->length = strLen;
    s->allocated = 2*strLen;
    return s;
}
void AppendBack(string* str,string* new) {
    if(str->allocated < str->length + new->length) { //allocate more
        char* data = (char*)realloc(strGet(str),str->allocated*2);
        str->allocated = str->allocated*2;
        str->data = data;
        if(str->allocated < str->length + new->length) { //need more allocation
            AppendBack(str,new);
        }
    }
    str->length = str->length + new->length;
    for(int i = new->length; i >= 0; --i) {
        str->data[str->length - i] = new->data[new->length - i];
    }
    str->data[str->length] = '\0';
}

int main() {
    string* a = Init("abc");
    string* b = Init("1234fedfsdffghjkjhgfds3ghjk7345678juhzbfsdfsd");
    AppendBack(a,b);
    strPrint(a);
    return 0;
}

编辑代码:

    char* strGet(string* str) {
        return str->data;
    }
    void strPrint(string* str) {
        printf("%s",strGet(str));
    }

抱歉,我遗漏了部分代码。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)