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

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

Использование функции 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%dn", '$', 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%dn" , '$', cost);

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

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

рс = 2*6;

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

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

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

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


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