Во многих C-библиотеках есть процедура в стиле printf, которая выглядит примерно так:
int __vgprintf(void *info, (void)(*print_function(void*, char)), const char *format, va_list params);
, который отформатирует предоставленную строку и вызовет функцию print_function с переданным информационным значением и каждым символом в последовательности. Функция, подобная fprintf, передает __vgprintf переданный параметр файла и указатель на функцию, которая преобразует свой void * в FILE * и выводит переданный символ в этот файл. Функция наподобие snprintf создаст структуру, содержащую символ * и длину, и передаст адрес этой структуры функции, которая будет выводить каждый символ в последовательности, если позволяет пространство.
Существует ли какой-либо стандарт для такой функции, который можно использовать, например, если кто-то хотел функцию для вывода произвольного формата на порт TCP? Обычный подход состоит в том, чтобы выделить буфер, который, как мы надеемся, достаточно велик, использовать snprintf, чтобы поместить туда данные, а затем вывести данные из буфера. Впрочем, было бы чище, если бы существовал стандартный способ указать, что средство форматирования печати должно вызывать пользовательскую подпрограмму с каждым символом.