Основы программирования

Глава 4 - СОВЕТЫ ПО ПРИМЕНЕНИЮ
Индекс материала
Глава 4
СИМВОЛЬНЫЕ СТРОКИ - ВВЕДЕНИЕ
Длина строки - функция strlen( )
КОНСТАНТЫ И ПРЕПРОЦЕССОР ЯЗЫКА Си
Язык Си - искусный фокусник: создание псевдоимен
ИЗУЧЕНИЕ И ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ printf( ) И scanf( )
Использование функции printf( )
Модификаторы спецификации преобразования, используемые в функции printf( )
Использование функции printf( ) для преобразования данных
Применение функции scanf( )
СОВЕТЫ ПО ПРИМЕНЕНИЮ
ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ
Все страницы

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

printf(" %d %d %d\n" , val1, val2, val3);

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

12  234  1222
4 5 23
22334 2322 10001

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

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

printf( %9d %9d %9d\n" , 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 ч.