Программирование на C и C++

Онлайн справочник программиста на C и C++

Модификаторы * u #

Функция printf() поддерживает два дополнительных модификатора для некоторых спецификаторов формата: * и #.

Помещение # перед g, G, f, Е или е обеспечивает наличие десятичной точки в случае отсутствия дробной части. Если перед спецификаторами формата х или X поставить #, то шестнадцатиричное число будет печататься с префиксом 0х. Если перед спецификатором о поместить #, то выведенное число будет иметь в начале 0. Нельзя применять # к остальным спецификаторам формата.

Помимо констант, спецификаторы минимальной ширины поля и точности могут предоставляться аргументами printf(). Для реализации этого следует использовать *. Когда форматная строка сканируется, функция printr() будет сопоставлять со звездочкой аргументы в порядке появления.

Например,

printf("%*.*f", 10,4,123.3);

минимальная ширина поля равна 10, точность - 4, а вводимое значение  123.3

Следующая программа демонстрирует использование # и *

#include <stdio.h>
int main(void)
{
printf("%х %#x\n", 10, 10);
printf("%*.*f", 10, 4, 1234.34);
return 0;
}