Язык Си - [23]

Шрифт
Интервал

, затем scanf( ).

     Инструкции, передаваемые функции printf( ), когда мы "просим" ее напечатать некоторую переменную, зависят от того, какого типа эта переменная. Например, при выводе на печать целого числа применяется формат %d, а при выводе символа - . Ниже перечислены все форматы, указываемые при обращениях к функции printf(), а затем показано, как они используются. Каждому форма ту соответствует тип выводимой (с их помощью) информации, причем первые пять покрывают большинство возникающих потребностей, а остальные четыре применяются достаточно редко.

ФорматТип выводимой информации
%dДесятичное целое число
Один символ
%sСтрока символов
Число с плавающей точкой, экспоненциальная запись
%fЧисло с плавающей точкой, десятичная запись
%gИспользуется вместо записей
%fили %е, если он короче
%uДесятичное целое число без знака
Восьмеричное целое число без знака
%xШестнадцатеричное целое число без знака

Посмотрим теперь, как эти форматы применяются.

Использование функции printf( )

     Приведем программу, иллюстрирующую обсуждаемые вопросы:

/* печать чепухи*/

#define PI  3.14159

main( )

      number = 5;

      float ouzo =13,5;

      int cost = 31000;

      printf("%d женщин выпили %f стаканов ликера. \n",

               number, ouzo);

      printf(" Значение числа pi равно %f \n", PI);

      printf(" Прощай! Твое искусство слишком дорого для меня \n");

     printf(" %c%d\n", '$', cost);

}

Результат выглядит так:

5 женщин выпили 13,50000 стаканов ликера.

Значение числа pi равно 3,14159.

Прощай! Твое искусство слишком дорого для меня.

$31000

Формат, указываемый при обращении к функции printf( ), выглядит следующим образом:

рrintf(Управляющая строка, аргумент1,  аргумент2, ...,);

Аргумент1, Аргумент2 и т. д. - это печатаемые параметры которые могут быть переменными, константами или даже выражениями, вычисляемыми вначале, перед выводом на печать.

Управляющая строка - строка символов, показывающая, как должны быть напечатаны параметры. Например, в операторе:

printf(" %d женщин выпили %f стаканов ликера. \n" , number, ouzo);

управляющей строкой служит фраза в кавычках (учитывая предыдущие замечания, это - строка символов), a number и ouzo - аргументы или в данном случае значения двух переменных.

  


                                                              РИС. 4.6. Аргументы функции printf( )

Приведем еще пример:

printf(" Значение числа pi равно %f.\n", PI);

На этот раз список аргументов содержит только один элемент - символическую константу PI.

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

     1. Символы, печатаемые текстуально.

     2. Идентификаторы данных, называемые также "спецификациями преобразования".

  


                                                           РИС. 4.7. Структура управляющей строки

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

printf("Количество слизняков %d, червяков %d.\n", scorel);

     3десь отсутствует аргумент для второй спецификации преобразования %d. Способ проявления этой ошибки целиком зависит от вашей вычислительной системы, но в лучшем случае вы получите бессмыслицу.

     Если вам нужно напечатать какую-нибудь фразу, то нет необходимости использовать спецификацию преобразования; если же требуется только вывести данные на печать, то можно обойтись и без использования комментария. Поэтому каждый из операторов, приведенных ниже, вполне приемлем.

printf("Прощай! Твое искусство слишком дорого для меня.\n");

printf(" %c%d\n" , '$', cost);

     Заметим, что во втором примере первый аргумент из печатаемого списка является символьной константой, а не переменной.

     Поскольку символ % используется в функции printf( ) для идентифицирования спецификаций преобразования, возникает небольшая проблема в том случае, если вам нужно напечатать сам символ %, Если просто написать один знак %, то компилятор примет его за ошибочную спецификацию преобразования. Выходом из создавшейся ситуации служит довольно простое решение - писать два символа % подряд:

рс = 2*6;

printf("Только %d%% стряпни Салли было съедобно.\n", рс);

Результат работы программы будет выглядеть следующим образом:

Только 12%  стряпни Салли было съедобно.

Модификаторы спецификации преобразования, используемые в функции printf( )

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

МодификаторЗначение
-Аргумент будет печататься с левой позиции поля заданной ширины (как объяснено ниже). Обычно печать аргумента оканчивается в самой правой позиции поля. Пример: %-10d
строка цифрЗадает минимальную ширину поля. Большее поле будет использоваться, если печатаемое число или строка не помещаются в исходном поле. Пример:

Еще от автора Митчел Уэйт
Язык программирования C [Лекции и упражнения, 6-е изд.]

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


Рекомендуем почитать
Изучаем Java EE 7

Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)


Геймдизайн. Рецепты успеха лучших компьютерных игр от Super Mario и Doom до Assassin’s Creed и дальше

Что такое ГЕЙМДИЗАЙН? Это не код, графика или звук. Это не создание персонажей или раскрашивание игрового поля. Геймдизайн – это симулятор мечты, набор правил, благодаря которым игра оживает. Как создать игру, которую полюбят, от которой не смогут оторваться? Знаменитый геймдизайнер Тайнан Сильвестр на примере кейсов из самых популярных игр рассказывает как объединить эмоции и впечатления, игровую механику и мотивацию игроков. Познакомитесь с принципами дизайна, которыми пользуются ведущие студии мира! Создайте игровую механику, вызывающую эмоции и обеспечивающую разнообразие.


Обработка событий в С++

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


MFC и OpenGL

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


Симуляция частичной специализации

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.