问题描述
我想创建一个字符串追加函数,但是当我想打印该函数时它崩溃了。我调试了它,但我找不到可能是什么问题。
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 (将#修改为@)