Ответ 1
printf()
и друзья для нормального использования. vprintf()
и друзья, когда вы хотите написать свою собственную функцию printf()
. Предположим, вы хотите написать функцию для печати ошибок:
int error(char *fmt, ...)
{
int result;
va_list args;
va_start(args, fmt);
// what here?
va_end(args);
return result;
}
Вы заметите, что вы не можете передать args
в printf()
, так как printf()
принимает много аргументов, а не один аргумент va_list
. Однако функции vprintf()
принимают вместо аргумента va_list
аргумент va_list
, так что это завершенная версия:
int error(char *fmt, ...)
{
int result;
va_list args;
va_start(args, fmt);
fputs("Error: ", stderr);
result = vfprintf(stderr, fmt, args);
va_end(args);
return result;
}