Приведем примеры использования различных спецификаторов. В каждой строке вызова функции printf( ) в качестве комментариев приведены результаты вывода. Переменная code содержит код возврата функции printf( ) - число напечатанных символов при выводе значения переменной f.
}
Необязательные элементы спецификации преобразования управляют другими параметрами форматирования.
Флаги управляют выравниванием вывода и печатью знака числа, пробелов, десятичной точки, префиксов восьмеричной и шестнадцатеричной систем счисления. Флаги могут отсутствовать, а если они есть, то могут стоять в любом порядке. Смысл флагов следующий:
- Выводимое изображение значения прижимается к левому краю поля. По умолчанию, т.е. при отсутствии этого флага, происходит выравнивание по правой границе поля.
+ Если выводимое значение имеет знак (любой: '+' или '-'), то он выводится. Без этого флага знак выводится только при отрицательном значении.
пробел Используется для вставки пробела на месте знака перед положительными числами.
# Если этот флаг используется с форматами "о", "х" или "X", то любое ненулевое значение выводится с предшествующим 0, 0х или 0Х соответственно. При использовании флага # с форматами "f', "g", "G" десятичная точка будет выводиться, даже если в числе нет дробной части.
Примеры использования флагов:
"%+d" - вывод знака '+' перед положительным целым десятичным числом;
"% d" - добавление (вставка) пробела на месте знака перед положительным числом (использован флаг пробелпосле символа %);
"%#о" - печать ведущих нулей в изображениях восьмеричных чисел.
Ширина_поля, задаваемая в спецификации преобразования положительным целым числом, определяет минимальное количество позиций, отводимое для представления выводимого значения. Если число символов в выводимом значении меньше, чем ширина_поля, выводимое значение дополняется пробелами до заданной минимальной длины. Если ширина_поля задана с начальным нулем, не занятые значащими цифрами выводимого значения позиции слева заполняются нулями.
Если число символов в изображении выводимого значения больше, чем определено в ширине_поля, или ширина_поля не задана, печатаются все символы выводимого значения.
Точность указывается с помощью точки и необязательной последовательности десятичных цифр (отсутствие цифр эквивалентно 0).
Точность задает:
• минимальное число цифр, которые могут быть выведены при использовании спецификаторов d, i, о, u, хили X;
• число цифр, которые будут выведены после десятичной точки при спецификаторах е, Е и f;
• максимальное число значащих цифр при спецификаторах g и G;
• максимальное число символов, которые будут выведены при спецификаторе s.
Непосредственно за точностью может быть указан модификатор, который определяет тип ожидаемого аргумента и задается следующими символами:
h- указывает, что следующий после h спецификатор d, i, о, хили X применяется к аргументу типа shortилиunsigned short;
l - указывает, что следующий после l спецификатор d, i, о, хили X применяется к аргументу типа longилиunsigned long;