Форматный вывод - функция printf

Две функции: printf для вывода и scanf для ввода (сле-дующий раздел) позволяют преобразовывать численные величиныв символьное представление и обратно. Они также позволяютгенерировать и интерпретировать форматные строки. Функция printf (control, arg1, arg2,...) преобразует аргументы в текстовую форму в соответствии сформатами, заданными в управляющей строке control, и выдаетрезультат в стандартный вывод. Управляющая строка содержитдва типа объектов: обычные символы, которые просто копиру-ются в выходной поток, и спецификации преобразований, каждаяиз которых вызывает преобразование и печать очередного аргу-мента printf. Каждая спецификация преобразования начинается с символа" % " и заканчивается символом преобразования (буквой, опреде-ляющей тип преобразования). Между " % " и символом преобразо-вания могут находиться: - Знак минус, который вызывает выравнивание преобразо- ванного аргумента по левому краю поля. -53- - Строка цифр, задающая минимальную ширину поля. Преоб- разованное число будет напечатано в поле по крайней мере этой ширины, а если необходимо, то и в более широком. Если преобразованный аргумент имеет меньше символов, чем указанная ширина поля, то он будет дополнен слева (или справа, если было указано вырав- нивание по левому краю) заполняющими символами до этой ширины. Заполняющим символом обычно является пробел, а если ширина поля указывается с лидирующим нулем, то этим символом будет нуль (лидирующий нуль в данном случае не означает восьмеричной ширины поля). - Точка, которая отделяет ширину поля от следующей строки цифр. - Строка цифр (точность); указывает максимальное число символов строки, которые должны быть напечатаны, или число печатаемых справа от десятичной точки цифр для переменных типа float или double. - Модификатор длины l, который указывает, что соот- ветствующий элемент данных имеет тип long, а не int. Ниже приводятся символы преобразования и их смысл: d - аргумент преобразуется к десятичному виду; o - аргумент преобразуется в беззнаковую восьмеричную форму (без лидирующего нуля); x - аргумент преобразуется в беззнаковую шестнадцатерич- ную форму (без лидирующих 0х); u - аргумент преобразуется в беззнаковую десятичную форму; c - аргумент рассматривается как отдельный символ; s - аргумент является строкой: символы строки печатаются до тех пор, пока не будет достигнут нулевой символ или не будет напечатано количество символов, указан- ное в спецификации точности; e - аргумент, рассматриваемый как переменная типа float или double, преобразуется в десятичную форму в виде [-] m. nnnnnne [+-] хх, где длина строки из n определя- ется указанной точностью. Точность по умолчанию равна 6; f - аргумент, рассматриваемый как переменная типа float или double, преобразуется в десятичную форму в виде [-] mmm. nnnnn, где длина строки из n определяется ука- занной точностью. Точность по умолчанию равна 6. -54- Отметим, что эта точность не определяет количество печатаемых в формате f значащих цифр; g - используется или формат %e или %f, какой короче; нез- начащие нули не печатаются. Вместо " ld "можно использовать " D ", вместо " lo " - " O ", вместо" lx " - " X ". Если идущий за % символ не является символом преобразо-вания, то печатается сам этот символ; следовательно,символ % можно напечатать, указав %%. Большинство из форматных преобразований очевидно.Единственным исключением является то, как точность взаимо-действует со строками. Следующая таблица демонстрирует влия-ние различных спецификаций на печать " hello, world " (12 сим-волов). Вокруг каждого поля помещены двоеточия для того,чтобы можно было определить его протяженность.: % 10 s:: hello, world:: % 10 -s:: hello, world:: % 20 s:: hello, world:: %- 20 s:: hello, world:: % 20.10 s:: hello, wor:: %- 20.10 s:: hello, wor:: %. 10 s:: hello, wor: ПРЕДОСТЕРЕЖЕНИЕ: printf использует свой первый аргумент дляопределения числа последующих аргументов и их типов. Есликоличество аргументов окажется недостаточным или они будутиметь несоответствующие типы, то возникнет путаница ирезультаты будут неверными.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: