Осъществява изход към буфер(низ), създаден посредством форматиращия низ format.
Буфер в който ще бъде изведен създадения низ.
Форматиращия низ е съставен от нула или повече нормални символи и директиви за преобразуване. Всяка директива за преобразуване започва с знака % и се заменя с един параметър.
Типове директиви за форматиране
| Директива | Описание |
| %% | Отпечатва процент |
| %c | Отпечатва символ |
| %d | Отпечатва int със знак |
| %i | Отпечатва int със знак |
| %e | Отпечатва се в научна нотация е |
| %E | Отпечатва се в научна нотация Е |
| %f | Отпечатва число с плаваща запетая |
| %g | Отпечатай с по краткото %е или %f |
| %G | Отпечатай с по краткото %E или %f |
| %o | Отпечатва числото в осмично представяне |
| %s | Отпечатва низ |
| %u | Огпечатва unsigned int |
| %x | Отпечатва число в 16-тичен формат с малки букви |
| %X | Отпечатва число в 16-тичен формат с големи букви |
| %p | Отпечатва указател |
| %n |
Всяка директива за форматиране в допълнение може да притежава четери вида флага. Флагове за подравняване и запълване, флагове за дължина, флагове за точност и флагове за модифициране.
Флагове за подравняване и запълване
| Флаг | Описание |
| - | Ляво подравняване при зададена дилжина на запълване. По подразбиране подравняването е десно. |
| + | Задава показването венаги на знака за плюс или минус. По подразбиране се показва знака само за минус. |
| (интервал) | Ако не е зададен знак за отпечатване, интервал се печата пред числото. |
| # | Използва се с %x %X. Задава пред числото да бъде поставен знака 0x. |
| 0 | Запълването на определената дължина се осъществява с нули. По подразбиране е с интервали. |
Флагове за дължина
| Флаг | Описание |
| (дължина) | Минимален брой символи за отпечатване. Ако дължината на стоиноста и по малка от зададената резултата се допълва с интевали. Стойноста не се отрязва ако дължината и не надхвърла зададената. |
| * | Минималния брой символи се задава динамично чрез параметър в аргументите. |
Флагове за точност
| Флаг | Описание |
| .дължина |
За целочислени типове(%d ,%i, %u, %o, %x, %X) флага определя броя на символите кайто ще бъдат показани. За числа с плаваща запетая (%f, %E) определя броя символи които ще бъдат показани след запетаята. За низове задава максималния брой символи който ще бъдат отпечатани. |
| .* | Задава броя на символите динамично чрез параметър. |
Флагове за модифициране
| Флаг | Описание |
| h | Визуализира short int параметри. Използва се с целочислиени типове(%d ,%i, %u, %o, %x, %X). |
| l | Визуализира long int пораметри с целочислени типове(%d ,%i, %u, %o, %x, %X) и разширени низове с %s. |
| L | Визуализира long double параметри. Използва се с типове за плаваща запетая (%f, %g, %G, %e, %E). |
va_list е тип, който се използва да държи списък от параметри подадени на функцията чрез макроса "...". За да бъде взет такъв лист се използва функцията va_start, на която се подава указател към променливата непосредствено преди макроса "...".
Връща дължината на изведения низ.
| от: adviser at cpp-examples dot com | Свали кода във файл |
#include <stdio.h> #include <stdarg.h> void printDate(char *format, ...) { char date[32] va_list args; va_start(args, format); vsprintf(date, format, args); printf("Дата: %s", date); va_end(args); } int main () { printDate("%d-%d-%d", 1978, 26, 3); return 0; }
vsprintf не проверява дължината на изходния буфер. Възможно е да възникне препълване на изходния буфер.
vprintf - печата форматиран изход от списък с аргументи
vfprintf - печата форматиран изход от списък с аргументи