Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
http.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.34 Mб
Скачать

Вывод адресов

Если необходимо вывести адрес, следует использовать %р. Данный спецификатор формата приводит к тому, что компьютер отображает адрес в формате, совместимом с типом адресации, используемой на компьютере. Следующая программа выводит адрес sample: #include <stdio.h> int sample; int main(void) { printf("%p", &sample); return 0; }

Спецификатор %n

Спецификатор формата %n отличается от других спецификаторов. Вместо того, чтобы говорить printf() о необходимости вывода чего-либо, он заставляет printi() инициализировать переменную, на которую указывает аргумент, соответствующий данному спецификатору, значением, равным числу уже выведенных символов. Другими словами, значение, соответствующее спецификатору формата %n, должно быть указателем на переменную. После того как printf() завершит работу, переменная будет содержать число выведенных символов до момента, когда был встречен %n. Стоит изучить следующую программу, чтобы понять работу данного спецификатора: #include <stdio.h> int main(void) int count; printf ("this%n is a test\n", &count); printf ("%d", count); return 0; } Программа выводит this is a test за числом 4. Спецификатор формата %n, как правило, используется для выполнения динамического форматирования.

Модификаторы формата

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

Спецификатор минимума ширины поля

Целое число, помещаемое между знаком % и кодом формата, рассматривается как спецификатор минимума ширины поля. Он добавляет к выводу пробелы для обеспечения некоторой минимальной длины. Если строка чисел длиннее, чем этот минимум, она будет выводиться без отсечений. По умолчанию для достижения необходимой длины строка дополняется пробелами. Если необходимо выводить не пробелы, а нули, следует поставить ноль перед спецификатором ширины поля. Например, %05d будет выводить числа, длиной меньше пяти символов с впереди стоящими нулями, чтобы полная длина была пять. Следующая программа демонстрирует использование спецификатора минимума длины поля: #include <stdio.h> int main (void) { double item; item = 10.12304; printf ("%f\n", item); printf("%10f\n", item); printf("%012f\n", item); return 0; } В результате работы данной программы получаем: 10.123040 10.123040 00010.123040

Модификатор минимума ширины поля, как правило, используется для создания таблиц, в которых элементы строк имеют одинаковый отступ. Например, следующая программа создает таблицу квадратов и кубов чисел от 1 до 19: #include <stdio.h> int main(void) { int i; /* вывод таблицы квадратов и кубов */ for(i=1; i<20; i++) printf("%8d %8d %8d\n", i, i*i, i*i*i); return 0; } В результате работы программы получим:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289 324 361

1 8 27 64 125 216 343 512 729 1000 1331 1728 2197 2744 3375 4096 4913 5832 6859

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]