#include <stdio.h>
#include <string.h>
#define INCREMENT_SIZE 10
int main(void) {
char* buffer
= (char*)malloc(sizeof(INCREMENT_SIZE
+ 1)); char* current = buffer;
char ch;
int length = 0;
int maxLength
= strlen(buffer
);
while (1)
{
if (ch == '\n')
break;
if (++length >= maxLength)
{
char* newBuffer
= realloc(buffer
, maxLength
+ INCREMENT_SIZE
);
if (newBuffer == NULL)
{
return 0;
}
maxLength += INCREMENT_SIZE;
current = newBuffer + (current - buffer);
buffer = newBuffer;
}
*current++ = ch;
}
*current = '\0';
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgSU5DUkVNRU5UX1NJWkUgMTAKCmludCBtYWluKHZvaWQpIHsKCWNoYXIqIGJ1ZmZlciA9IChjaGFyKiltYWxsb2Moc2l6ZW9mKElOQ1JFTUVOVF9TSVpFICsgMSkpOwoJY2hhciogY3VycmVudCA9IGJ1ZmZlcjsKCWNoYXIgY2g7CglpbnQgbGVuZ3RoID0gMDsKCWludCBtYXhMZW5ndGggPSBzdHJsZW4oYnVmZmVyKTsKCQoJd2hpbGUgKDEpCgl7CgkJY2ggPSBnZXRjaGFyKCk7CgkJaWYgKGNoID09ICdcbicpCgkJCWJyZWFrOwoJCQkKCQlpZiAoKytsZW5ndGggPj0gbWF4TGVuZ3RoKQoJCXsKCQkJY2hhciogbmV3QnVmZmVyID0gcmVhbGxvYyhidWZmZXIsIG1heExlbmd0aCArIElOQ1JFTUVOVF9TSVpFKTsKCQkJCgkJCWlmIChuZXdCdWZmZXIgPT0gTlVMTCkgCgkJCXsKCQkJCWZyZWUoYnVmZmVyKTsKCQkJCXJldHVybiAwOwoJCQl9CgkJCQoJCQltYXhMZW5ndGggKz0gSU5DUkVNRU5UX1NJWkU7CgkJCWN1cnJlbnQgPSBuZXdCdWZmZXIgKyAoY3VycmVudCAtIGJ1ZmZlcik7CgkJCWJ1ZmZlciA9IG5ld0J1ZmZlcjsKCQl9CgkJCgkJKmN1cnJlbnQrKyA9IGNoOwoJfQoJCgkqY3VycmVudCA9ICdcMCc7CglwcmludGYoIiVzXG4iLCBidWZmZXIpOwoJcHJpbnRmKCIlZFxuIiwgc3RybGVuKGJ1ZmZlcikpOwoJCglyZXR1cm4gMDsKfQo=