Следующая функция C:
int sprintf ( char * str, const char * format, ... );
записывает отформатированные данные в строку. Размер массива, передаваемого как str, должен быть достаточным, чтобы содержать всю отформатированную строку. Однако что, если длина отформатированной строки не известна заранее? Как можно использовать эту функцию (или другую подобную функцию) для записи отформатированных данных, длина которых неизвестна?
Например:
#include <stdio.h>
int main ()
{
char buffer [13];
int n, a=5, b=3;
n=sprintf (buffer, "%d plus %d is %d", a, b, a+b);
printf ("[%s] is a %d char long string\n",buffer,n);
return 0;
}
Буфер должен быть 13 или больше, чтобы это работало. Если длина строки была неизвестна, а буфер, например, был установлен на 5, это не будет работать. Мне нужно что-то, что может динамически распределять или перераспределять буфер для строк, которые оказываются больше, чем буфер.