Синтаксис описания формата: функции printf и wprintf
Описывается синтаксис для строковых аргументов формата к printf, wprintf и связанных функций.Более безопасные версии этих функций доступны; дополнительные сведения см. в разделе Средства безопасности в CRT.Дополнительные сведения об отдельных функциях см. в документации для этих определенных функций.Список этих функций см. в разделе Поток ВВОДА-ВЫВОДА.
Спецификация формата, состоящую из дополнительного и обязательных полей, имеет следующую форму:
%[флажки] [ширина] [.точность] [{h | l | ll | w | I | I32 | типI64}]
Каждое поле спецификации формата символа или число, означает конкретный описатель формата параметра или преобразования.Обязательный знак type определяет тип преобразования, применяются к аргументу.Необязательное flags, width и аспекты формата дополнительных полей элемента управления precision.Базовая спецификация формата содержит только символ процента и type символ- для примера %s, указывающий преобразование строк.Если символ процента следует символ, который не имеет значение как поле формата, символ копируется на выходные данные вносятся изменения.Чтобы вывести символ знака процента, используйте %%.
Поля управления спецификации формата следующие аспекты преобразования и формата аргумента:
type
Обязательный знак описателя преобразования, который определяет, является ли связанный атрибут argument интерпретируется как символ, строки, целого числа или числа с плавающей запятой.Для получения дополнительной информации см. символы поля типа printf.flags
Дополнительный символ или символы, обоснование вывода элемента управления и вывод подписей, пробелов, предшествующих нулей, десятичных запятой и восьмиштырьковых и шестнадцатеричных префиксов.Для получения дополнительной информации см. Пометить директивы.Несколько флажок может появиться в спецификацию формата и флажки могут размещаться в любом порядке.width
Необязательный десятичное число, указывающее минимальное количество символов, производными.Для получения дополнительной информации см. спецификация ширины printf.precision
Необязательный десятичное число, указывающее максимальное количество символов, которые будут напечатаны вместе для строк, количество значащих цифр или символов числа цифр после десятичной запятой для плавающей запятой или минимальное число цифр, напечатаны для целочисленных значений.Дополнительные сведения см. в разделе "как тип влияние значений точности" раздела Спецификация точности.h | l | ll | w | I | I32 | I64
Необязательные префиксы в type, определяющих размер соответствующего аргумента.Дополнительные сведения см. в разделе " префиксы размера" раздела Спецификация размера.
Примечание по безопасности |
---|
Убедитесь, что строки спецификации формата не определяемый пользователем.Например, рассмотрим программы, которая предлагает пользователю ввести имя и сохраняет данные в строковую переменную с именем name.Для печати не name, выполните следующие действия: printf( name ); /* Danger! If name contains "%s", program will crash */ Вместо этого выполните следующие действия: printf( "%s", name ); |
См. также
Ссылки
printf, _printf_l, wprintf, _wprintf_l
printf_s, _printf_s_l, wprintf_s, _wprintf_s_l