Команда форматирует строку в стиле процедуры sprintf.СИНТАНСИССинтаксиc Введение Процесс формирования Указатель позиции Флаги преобразования Минимальная ширина поля Точность Преобразователь длины Тип преобразования Отличия от ANSI SPRINTF
format formatString?arg arg...?ВВЕДЕНИЕ
Команда немного отличается от sprintf в части отдельных спецификаторов и ключей.ПРОЦЕСС ФОРМИРОВАНИЯ
Каждый из спецификаторов преобразования может содержать до шести различных частей: указатель позиции, набор флагов, минимальная ширина поля, точность, преобразователь длины и тип преобразования. Любые из полей, кроме типа преобразования, могут отсутствовать. Ниже обсуждаются соответствующие разделы спецификаторов.УКАЗАТЕЛЬ ПОЗИЦИИ
Если за символом ‘%’ следуют целое число и знак ‘$’, как например в ‘%2$d’, то величина для преобразования берется не из следующего аргумента, а из аргумента, занимающего соответствующую позицию в списке (‘1’ соответствует первому аргументу arg). Если спецификатор преобразования требует нескольких аргументов (когда он содержит символ ‘*’), то используются последовательные аргументы, начиная с указанного. Если один из спецификаторов содержит указание позиции аргумента, то и все остальные спецификаторы должны его содержать.ФЛАГИ ПРЕОБРАЗОВАНИЯ
- | Указывает, что соответствующий аргумент будет выровнен влево (числа обычно выравниваются вправо с добавлением лидирующих пробелов при необходимости). |
+ | Указывает, что числа всегда будут вставлены со знаком, даже если они положительные. |
space | Указывает, что перед числом будет добавлен пробел, если первый символ не знак. |
0 | Указывает, что число будет выровнено с добавлением лидирующих нулей. |
# | Указывает на использование альтернативной формы вывода. Для ‘o’ и ‘O’ преобразований гарантирует, что первой цифрой всегда будет ‘0’. Для ‘x’ и ‘X’ преобразований — что 0x или 0X соответственно будет добавлен в начало числа. Для ‘e’, ‘E’, ‘f’, ‘g’, и ‘G’ — что в числе будет использована десятичная точка. Для ‘g’ и ‘G’ — что конечные нули не будут отброшены. |
Четвертая часть спецификатора определяет точность представления чисел. Она состоит из точки и последующего числа. Число имеет различный смысл при различных преобразованиях. Для ‘e’, ‘E’ и ‘f’ преобразования оно определяет число цифр справа от десятичной точки. Для ‘g’ и ‘G’ — общее число чисел слева и справа от десятичной точки (однако, конечные нули будут обрезаться, если не указан флаг ‘#’). Для целочисленных преобразований оно определяет минимальное число символов (при необходимости будут добавляться лидирующие нули). Для ‘s’ преобразований определяет максимальное число символов, которое будет выводиться. Если строка длиннее, конечные символы будут отброшены. Если точность указана как ‘*’, а не как число, то в качестве числового значения используется значение следующего аргумента в команде.ПРЕОБРАЗОВАТЕЛЬ ДЛИНЫ
Последняя часть спецификатора представляет собой букву, которая определяет тип преобразования. Допускаются следующие значения.ОТЛИЧИЯ ОТ ANSI SPRINTF
d Преобразует целое число в десятичную строку со знаком. u Преобразует целое число в десятичную строку без знака. i Преобразует целое число в десятичную строку со знаком. Целое может быть десятичным, восьмеричным (с 0 вначале) или шестнадцатеричным (с 0x вначале). o Преобразует целое число в восьмеричную строку без знака. x or X Преобразует целое число в шестнадцатеричную строку без знака. Используются символы `0123456789abcdef'' для x и ``0123456789ABCDEF'' для X. c Преобразует целое число в восьмибитный символ, который оно представляет. s Не преобразует, но просто вставляет строку f Преобразует число с плавающей точкой в десятичное со знаком в форме xx.yyy, где число символов после запятой определяется точностью. e or E Преобразует число с плавающей точкой в число в экспоненциальной форме x.yyye±zz, где число символов после запятой определяется точностью (по умолчанию 6). Для E в записи числа используется Eвместо e. g or G Если порядок числа меньше –4 или больше, чем точность, или равен точности, преобразует число с плавающей точкой как ‘%e’ или ‘%E’. В противном случае преобразует как ‘%f’. % Просто подставляет символ ‘%’.
Для числовых преобразований аргумент должен быть целым числом или десятичным с плавающей точкой. Аргумент преобразуется в двоичное число, а затем преобразуется обратно в строку в соответствии с указанным типом преобразования.
Поведение команды format отличается от процедуры sprintf в следующих моментах:‘%p’ и ‘%n’ типы не поддерживаются
Для ‘%c’ аргумент должен быть десятичным числом.
При преобразованиях длины значение l игнорируется.