LINUX.ORG.RU

История изменений

Исправление KivApple, (текущая версия) :

int len = snprintf(NULL, 0, ...);
char buf[len + 1];
len = snprintf(buf, sizeof(buf), ...);

Не совсем кроссплатформенно (как минимум MSVC не умеет массивы переменной длины, GCC и Clang умеют), но будет делать именно то, что ты хочешь - буфер выделяется на стеке, его гарантированно хватит.

Исправление KivApple, :

int len = snprintf(NULL, 0, ...);
char buf[len + 1];
len = snprintf(buf, sizeof(buf), ...);

Не совсем кроссплатформенно (как минимум MSVC не умеет массивы переменной длины, GCC и Clang умеют), но будет делать именно то, что ты хочешь.

Исходная версия KivApple, :

int len = snprintf(NULL, 0, ...);
char buf[len + 1];
len = snprintf(buf, sizeof(len), ...);

Не совсем кроссплатформенно (как минимум MSVC не умеет массивы переменной длины, GCC и Clang умеют), но будет делать именно то, что ты хочешь.