Поделиться через


Синтаксис описания формата: функции printf и wprintf

Описывает синтаксис для аргументов строки формата в printf, wprintf, и связанных функций. Существуют более безопасные версии этих функций; дополнительные сведения см. в разделе Функции безопасности в CRT. Дополнительные сведения об отдельных функциях см. в документации по этим определенным функциям. Список этих функций см. в разделе Потоковый ввод-вывод.

Спецификация формата, состоящая из дополнительных и обязательных полей, имеет следующую форму:

%[flags] [width] [.precision] [{h | l | ll | w | I | I32 | I64}] type

Каждое поле спецификации формата - это символ или число, указывающее конкретный параметр формата или описатель преобразования. Обязательный символ 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

Позиционные параметры printf_p

Директивы флагов

Спецификация ширины printf

Спецификация точности

Спецификация размера

Символы поля типа printf