Книга: Язык Си - руководство для начинающих

СОВЕТЫ ПО ПРИМЕНЕНИЮ

СОВЕТЫ ПО ПРИМЕНЕНИЮ

     Задание фиксированной ширины полей оказывается полезным при печати данных столбцами. Поскольку шириной поля по умолчанию является "ширина" числа, при повторном использовании оператора

printf(" %d %d %dn" , val1, val2, val3);

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

12  234  1222

4  5  23

22334  2322  10001

(Здесь предполагается, что между обращениями к оператору печати значения переменных изменялись.)

     Эти же данные можно представить в улучшенном виде, если за дать достаточно большую фиксированную ширину поля. При использовании оператора

printf( %9d %9d %9dn" , val1, val2, val3);

результат будет выглядеть так:

      12     234    1222

        4         5        23

22334   2322  10001

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

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

     С другой стороны, если печатаемое число включено в некоторую фразу, то часто при его выводе оказывается удобным задать поля равной или меньше требуемой. Это дает возможность включить число в фразу без добавления лишних пробелов. Например, результатом работы оператора:

printf(" Скороход Беппо пробежал %.2f мили за 3 ч.n", distance);

могла бы быть следующая фраза:

Скороход Беппо пробежал 10.22  мили за 3 ч.

Изменяя спецификацию преобразования на %10.2f, получим

Скороход Беппо пробежал                  10.22 мили за 3 ч.

Оглавление книги


Генерация: 0.502. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз