CodeNet / Языки программирования / C / C++ / Linux/Unix / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник С/C++ для UNIX - Список функций
vfprintf - vsprintf
VFPRINTF - VSPRINTF #include <stdio.h> #include <varargs.h> требуется для совместимости с UNIX V. #include <stdarg.h> требуется для совместимости со стандартом ANSI C. int vfprintf(stream, format-string, arg-ptr); int vprintf(format-string, arg-ptr); int vsprintf(buffer, format-string, arg-ptr); FILE *stream; указатель на структуру типа FILE. char *buffer; память для хранения резуль- тата char *format-string; строка управления форматом va_list arg-ptr; указатель на список аргу- ментов. Описание. Функции vfprintf, vprintf, vsprintf форматируют и выводят данные соответственно в поток stream, поток стандартного вывода и буфер buffer. Эти функции похожи на свои двойники fprintf, printf, sprintf, но используют указатель на список аргументов вместо списка аргументов. Format-string имеет ту же самую форму и функцию, что и ар- гумент строки формата для функции printf; (см. описание функции printf). Параметр arg-ptr имеет тип va_list, определяемый в <vararg.h> и <stdarg.h>. Этот параметр указывает на список аргу- ментов, которые преобразовываются и выводятся согласно соответст- вующим спецификациям формата в format-string. Возвращаемое значение. Возвращаемым значением является количество выведенных сим- волов. См. также fprintf, printf, sprintf, va_arg, va_end, va_start. Пример: В качестве примера приводится листинг программы, использую- щей <varargs.h> для совместимости с UNIX V. #include <stdio.h> #include <varargs.h> main () { int line = 1; char *filename = "EXAMPLE"; . . . error("Error: line %d, file %s\n", line, filename); . . . error("Syntax error\n"); } error(va_alist); va_dcl; { char *fmt; va_list arg_ptr; va_start(arg_ptr); /* arg_ptr сейчас указывает на строку формата */ fmt = va_arg(arg_ptr, char *); /* arg_ptr сейчас указывает на аргумент после строки форма- та */ vprintf(fmt, arg_ptr); va_end(arg_ptr); } На выходе: Error: line 1, file EXAMPLE Syntax error. Ниже приводится аналогичная программа, перезаписанная для совместимости со стандартом ANSI C. #include <stdio.h> #include <stdarg.h> main () { int line = 1; char *filename = "EXAMPLE"; . . . error("Error: line %d, file %s\n", line, filename); . . . error("Syntax error\n"); } error(fmt); char *fmt; { va_list arg_ptr; va_start(arg_ptr, fmt); /* arg_ptr сейчас указывает на аргумент после строки форма- та */ vprintf(fmt, arg_ptr); va_end(arg_ptr); } На выходе: Error: line 1, file EXAMPLE Syntax error.