Есть ли эквивалент va_list snprintf, который принимает va_list переменных аргументов? Я пытаюсь выполнить две функции:Формирование строки C с помощью va_list
char * __HYP format_cstring(const char * format, ...);
chat * __HYP format_cstringv(const char * format, var_list args);
Но я не знаю, как применить snprintf
к этой ситуации. Что-то вроде этого (обратите внимание на знаки вопроса):
char * __HYP format_cstring(const char * format, ...)
{
int size = snprintf(NULL, 0, format, ??);
char * buffer = (char *)malloc(size * sizeof(char));
if (snprintf(buffer, size, format, ??) < 0) {
free(buffer);
return NULL;
}
return buffer;
}
А как насчет его format_cstringv
коллеги?
Не бросайте 'malloc'; 'sizeof (char)' равен 1 по определению. – melpomene
Например, http://port70.net/~nsz/c/c11/n1570.html#7.21.6.12. Уходит ли Google? – Olaf
Вы не можете. См. 'Vsnprintf'. http://www.cplusplus.com/reference/cstdio/vsnprintf/ – Gene