Системное программирование в UNIX средствами Free Pascal

Задание ширины поля и точности


Спецификации формата могут также включать информацию о минимальной ширине (width) поля, в котором выводится аргумент, и точности (precision). В случае целочисленного аргумента под точностью понимается максимальное число выводимых цифр. Если аргумент имеет тип single или double, то точность задает число цифр после десятичной точки. Для строчного аргумента этот параметр определяет число символов, которые будут взяты из строки.

Значения ширины поля и точности находятся в спецификации формата сразу же после знака процента и разделены точкой, например, спецификация

%10.5d

означает: вывести соответствующий аргумент типа integer в поле шириной 10 символов; если аргумент имеет меньше пяти цифр, то дополнить его спереди нулями до пяти знаков. Спецификация

%.5f

означает: вывести соответствующий аргумент типа single или double с точностью до пяти десятичных знаков после запятой. Этот пример также показывает, что можно опускать параметр ширины поля. Аналогично можно задавать только ширину поля, поэтому спецификация

%10s

показывает: вывести соответствующую строку в поле длиной не менее 10 символов.

Во всех приведенных примерах вывод будет выравниваться по правой границе заданного поля. Для выравнивания по левой границе нужно задать знак минус сразу же за символом процента. Например, спецификация

%-30s

означает, что соответствующий строчный аргумент будет выведен в левой части поля шириной не менее 30 символов.

Может случиться, что ширина спецификации формата не может быть вычислена до запуска программы. В этом случаем можно заменить спецификацию ширины поля символом (*). Тогда процедура printf будет ожидать для этого кода дополнительный аргумент типа integer, определяющий ширину поля. Поэтому выполнение оператора

var

  width, iarg:integer;

.

.

.

printf('%*d', [width, iarg]);

приведет к тому, что целочисленная переменная iarg будет выведена в поле шириной width.



Содержание раздела