#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char *str;
} StringBuilder;
void append(StringBuilder *sb, const char *str) {
if (!str) return;
const size_t len
= sb
->str
? strlen(sb
->str
) : 0; if (newstr) {
sb->str = newstr;
}
}
void setLength(StringBuilder *sb, size_t n) {
char *newstr
= (char *) realloc(sb
->str
, n
+ 1); if (newstr) {
sb->str = newstr;
sb->str[n] = '\0';
}
}
int main() {
StringBuilder sb = { .str = 0 };
append(&sb, "Привет америкосам");
append(&sb, ", я вас уделаю!");
setLength(&sb, 2);
setLength(&sb, 0);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKdHlwZWRlZiBzdHJ1Y3QgewogIGNoYXIgKnN0cjsKfSBTdHJpbmdCdWlsZGVyOwoKdm9pZCBhcHBlbmQoU3RyaW5nQnVpbGRlciAqc2IsIGNvbnN0IGNoYXIgKnN0cikgewogICAgaWYgKCFzdHIpIHJldHVybjsKCiAgICBjb25zdCBzaXplX3QgbGVuID0gc2ItPnN0ciA/IHN0cmxlbihzYi0+c3RyKSA6IDA7CiAgICBjaGFyICpuZXdzdHIgPSAoY2hhciAqKSByZWFsbG9jKHNiLT5zdHIsIGxlbiArIHN0cmxlbihzdHIpICsgMSk7CiAgICBpZiAobmV3c3RyKSB7CiAgICAgICAgc2ItPnN0ciA9IG5ld3N0cjsKICAgICAgICBzdHJjcHkobmV3c3RyICsgbGVuLCBzdHIpOwogICAgfQp9Cgp2b2lkIHNldExlbmd0aChTdHJpbmdCdWlsZGVyICpzYiwgc2l6ZV90IG4pIHsKICAgIGNoYXIgKm5ld3N0ciA9IChjaGFyICopIHJlYWxsb2Moc2ItPnN0ciwgbiArIDEpOwogICAgaWYgKG5ld3N0cikgewogICAgICAgIHNiLT5zdHIgPSBuZXdzdHI7CiAgICAgICAgc2ItPnN0cltuXSA9ICdcMCc7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgU3RyaW5nQnVpbGRlciBzYiA9IHsgLnN0ciA9IDAgfTsKICAgIGFwcGVuZCgmc2IsICLQn9GA0LjQstC10YIg0LDQvNC10YDQuNC60L7RgdCw0LwiKTsKICAgIHByaW50ZigiJXNcbiIsIHNiLnN0cik7CiAgICBhcHBlbmQoJnNiLCAiLCDRjyDQstCw0YEg0YPQtNC10LvQsNGOISIpOwogICAgcHJpbnRmKCIlc1xuIiwgc2Iuc3RyKTsKICAgIHNldExlbmd0aCgmc2IsIDIpOwogICAgcHJpbnRmKCIlc1xuIiwgc2Iuc3RyKTsKICAgIHNldExlbmd0aCgmc2IsIDApOwogICAgcHJpbnRmKCIlc1xuIiwgc2Iuc3RyKTsKICAgIHJldHVybiAwOwp9Cg==