printf

Запись форматированных выходных данных (POSIX)

Синтаксис:

printf формат [аргумент...]

Опции:

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

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64, arm, armv7, e2k, mips, ppc, x86

Описание:

Утилита printf записывает в стандартный поток вывода аргументы, отформатированные с помощью управляющей строки формат (синтаксис строки формат основан на функции printf()).

Управляющая строка формат содержит символы следующих типов:

Спецификация преобразования вводится символом %. Для вывода собственно символа процента его следует удвоить (%%). Непосредственно за символом % можно указать любые из следующих данных, в приведенной последовательности:

<флаги><ширина><точность><длина_типа><преобразование>

где:

флаги
Флаги управления форматом.
ширина
Ширина поля.
точность
Количество разрядов для числовых значений.
длина_типа
Модификатор длины типа.
преобразование
Символ преобразования.

Эти компоненты обрабатываются в очередности слева направо.

Флаги управления форматом

Флаги управления форматом изменяют смысл спецификации преобразования. Можно не указывать ни одного флага или указать несколько следующих флагов в любом порядке:

-
Выровнять текст в пределах поля по левому краю.
+
Всегда указывать знак (+ или -) в начале результата преобразования со знаком.
Пробел
Если первый символ преобразования не является знаком, то добавить в начало результата пробел.
#
Преобразовать значение в альтернативную форму:
Преобразование Отформатированный результат:
o (восьмеричное значение) Первая цифра – 0.
X или x (шестнадцатеричное значение) Для ненулевого результата используется префикс 0X или 0x.
e, E, f, g и G В результате всегда выводится десятичная точка (.), даже если за ней не следуют цифры.
g и G Нули в конце значения не удаляются из результата (по умолчанию – удаляются).
c, d, i, s и u Не действует; # игнорируется.
0 Для всех преобразований: заполнение поля нулями в начале. Флаг 0 игнорируется для преобразований d, i, o, u, X и x, если указана точность; этот флаг также игнорируется, если указан флаг -.

Ширина поля

Необязательное десятичное целочисленное значение, соответствующее минимальному числу символов, используемых для вывода отформатированного элемента. Если ширина поля не указана или если значение меньше числа символов, требуемого для вывода преобразованного значения (при условии соблюдения указанной точности), используется поле с шириной, достаточной для вывода преобразованного значения.

Если число символов, требуемое для представления преобразованного значения, меньше ширины поля, то значение дополняется пробелами или нулями (символами "0") слева (или справа, если указан флаг управления форматом -). Если значение ширины поля начинается с нуля, значение дополняется нулями, в противном случае – пробелами.

Точность

Необязательное десятичное целочисленное значение, следующее за символом точки (.). Действие значения точности зависит от указанного символа преобразования (см. раздел "Символ преобразования" ниже).

Длина типа

Необязательный символ, изменяющий интерпретируемый размер символа преобразования. Единственный поддерживаемый символ длины типа – l (строчная "L"); этот символ приводит к тому, что в результате преобразований d, i, o, u, X или x обрабатывается аргумент типа long int или unsigned long int.

Символ преобразования

Символ, определяющий тип применяемого преобразования. Например, если указан символ d, команда printf обрабатывает соответствующий аргумент как десятичное целое число. Используются следующие символы преобразования:

d i o u X x
В качестве аргумента используется целочисленное значение. Оно выводится одним из следующих способов: Для каждого из этих случаев указанная позиция интерпретируется как минимальное количество выводимых разрядов (по умолчанию 1, если не указана точность). В отсутствие спецификатора длины типа в результате этих преобразований получается либо число со знаком в диапазоне от –32 768 до 32 767, либо число без знака в диапазоне от 0 до 65 535. Если длина типа указана, в результате преобразований получается либо число со знаком в диапазоне от –2 147 483 648 до 2 147 483 647, либо число без знака в диапазоне от 0 до 4 294 967 295. Для шестнадцатеричного формата регистр выходных данных определяется регистром спецификатора (X или x).
e, E
Аргумент представляет собой значение с плавающей точкой и отображается в экспоненциальном представлении. Значение печатается в следующем формате:
[-]d[.ddd]e{+|-}dd

Первая часть – необязательный знак. Вторая часть – одна цифра, которая отлична от нуля, если аргумент отличен от нуля. Третья (необязательная) часть – символ десятичной точки, за которым, если указана ненулевая точность, следует последовательность разрядов, количество которых определяется указанным значением точности. Если точность не указана, предполагается значение, равное 6. Если указана точность, равная 0, десятичная точка не выводится. Четвертая часть – символ e или E в зависимости от регистра символа преобразования, за которым следует значение со знаком. Это значение обозначает порядок величины.
f
Аргумент – значение с плавающей точкой. Значение печатается в следующем формате:
[-]ddd.ddd

где количество разрядов, выводимых после символа десятичной точки, равно указанному значению точности. Если точность не указана, предполагается значение, равное 6. Если указана точность, равная 0, десятичная точка не выводится.
g, G
Аргумент – значение с плавающей точкой. Значение выводится в формате "e" (или в формате "E", если указан символ преобразования G), если значение экспоненты в этом стиле меньше -4 либо больше или равно указанной точности; в противном случае значение выводится в формате "f".
c
Выводится первый символ аргумента.
s
Аргумент – строка символов; выводится эта строка. Количество символов, выводимых из указанной строки, соответствует значению точности, если оно указано. Строка выравнивается по левому или правому краю в пределах указанной ширины поля. Если ширина поля не указана, заполнение не применяется.

Управляющие последовательности

Утилита printf интерпретирует символьные управляющие последовательности в строке формат аналогично языку программирования C. Эти последовательности, которые вводятся с символом обратной косой черты (\), преобразуются следующим способом:

\a
Символ предупреждения (звуковой сигнал)
\b
Символ возврата на позицию
\f
Символ перевода страницы
\n
Символ новой строки
\r
Символ возврата каретки
\t
Символ табуляции
\v
Символ вертикальной табуляции
\'
Символ апострофа (')
\\
Символ обратной косой черты (\)
\d
Символ, указанный одно-, двух- или трехзначным восьмеричным числом d

Примеры:

Вывод на экран текста "hello, world" на отдельной строке.

printf "hello, world\n"

То же, но без перехода на новую строку:

printf "hello, world"

Вывод на экран значения в экспоненциальном представлении:

printf "n = %e\n" 3.1415926535897

Возвращаемое значение:

0
Завершено успешно.
>0
Возникла ошибка.

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино», POSIX

Тематические ссылки:

echo, команда print интерпретатора ksh




Предыдущий раздел: Утилиты