Описание
Осуществляют форматную печать.
fprintf - пишет литеры в поток fp.
printf - пишет литеры в поток stdout.
sprintf - пишет литеры в память buffer.
Аргументы интерпретируются в соответствии со строкой
формата, оканчивающейся 0. Строка формата является
последовательностью литер со встроенными командами
преобразования. Литеры, не являющиеся частью команд,
подлежат выводу. Команды преобразования состоят из :
'%'{flag}[field_width]['.'precision][l или L]conversion_char
где :
% Означает начало команды преобразования.
Чтобы напечатать '%', надо использовать '%%'.
flag characters Литеры режимов
- - Означает необходимость выравнивания
информации по левому краю поля вывода.
+ - Означает, что преобразование, включающее
знак, должно начинаться с + или -.
пробел
(space) - Означает, что в случае преобразования поло-
жительного результат начинается с пробела.
Режим + перекрывает режим space.
# - Имеет смысл для преобразования 'x' или 'X'
и приводит к добавлению перед выводом сим-
волов 0x или 0X.
Для преобразования 'о' в вывод добавляется
лидирующий ноль.
В случае преобразований e, E, f, g, G всег-
да появляется десятичная точка. Если это
преобразование g или G, замыкающие 0 не
будут опускаться.
Field_width Ширина поля
Десятичное целое, управляющее минимальным количест-
вом печатаемых литер. Если действительное число
литер меньше, чем field_width, это число допол-
няется пробелами. Если строка цифр field_width на-
чинается с 0, для дополнения используется 0.
Если field_width есть литера *, действительное зна-
чение длины поля вывода берется из следующего цело-
го аргумента. Если field_width отрицательно, счита-
ется, что задан флаг '-', а в качестве field_width
берется абсолютное значение. Если действительное
число литер превосходит field_width, это поле соот-
ветственно увеличивается.
Precision Точность
Эта строка цифр, следующая за '.', определяет точ-
ность преобразования. Если цифры за точкой отсутст-
вуют, точность равна 0. Для преобразования целых
точность есть минимальное количество выводимых цифр.
Для 'g' и 'G'- это максимальное количество значащих
цифр. Для 'e', 'E' и 'f'- это количество цифр после
десятичной точки. Для 's' - это максимальное коли-
чество литер в строке. Если точность включает лиди-
рующий 0, тогда свободное поле вывода заполняется 0.
l
В случае спецификаций преобразования o, b, u, x, X,
i, d используемый аргумент должен быть типа long,
исключение составляет преобразование p, когда аргу-
мент должен быть дальним указателем. Для других
преобразований этот флаг игнорируется.
L
Этот флаг игнорируется.
Conversion_char Преобразующая литера
Это одна из литер d, i, o, b, u, x, X, f, e, E, g,
G, c, s, p, n, %. Действие других литер неопре-
делено.
d,i,o,b,u,x,X
Соответсвующий целый аргумент преобразуется в стро-
ку цифр, причем, 'o' производит беззнаковое восьме-
ричное, `b' - беззнаковое двоичное, 'u' - беззнако-
вое десятичное, 'x' и 'X' - беззнаковое шестнадца-
тиричное, 'i' и 'd' - десятичное со знаком. В слу-
чае 'x' используются строчные цифры, в случае
'X' - заглавные. Если не специфицирована точность,
используется умолчание 1. Если реально выводится
меньше цифр, чем определено точностью, вывод до-
полняется лидирующими пробелами. Если аргумент и
точность равны 0, ничего не печатаются.
c
Младший значащий байт целого аргумента печатается
как литера.
e,E
Аргумент типа double печатается, используя пред-
ставление ([-]d.dddddd+-dd). Здесь перед десятичной
точкой одна цифра и precision цифр после. Умолчание
для precision равно 6. Если precision 0, десятичная
точка не печатается. В экспоненте вместо 'e' будет
использовано 'E', если задана литера 'E'. В экспо-
ненте присутствуют как минимум две цифры.
f
Аргумент типа double печатается в виде строки
[-]dd.dddd. Количество цифр после десятичной точки
задается precision, которое по умолчанию равно 6.
Если precision 0, дробная часть и десятичная точка
не печатаются.
g,G
Аргумент типа double печатается c помощью формата
'f' или 'e' (или 'E', если задан 'G' формат) в
зависимости от величины аргумента. 'e' используется,
если экспонента < 3 или экспонента > precision.
Precision задает количество значащих цифр; умолча-
ние равно 6. Десятичная точка появляется, если
предшествует цифре. Замыкающие 0 опускаются.
n
Аргумент является указателем на целое, в которое
записывается количество цифр, напечатанных к этому
моменту. Никакие литеры не печатаются и не преобра-
зуются.
p
Аргумент является указателем, значение которого
(адрес) печатается в виде segment:offset для даль-
него указателя или в виде XXXX для ближнего указа-
теля.
s
Аргумент является указателем на строку. Литеры печа-
таются до замыкающего 0, или до исчерпания литер, ко-
личество которых задано precision. Умолчание precision
равно 32767. Замыкающий 0 не печатается.
%
Печатается литера '%'.
Использование
#include
int fprintf(FILE *fp,char *format,...); /* ANSI */
int printf(char *format,...); /* ANSI */
int sprintf(char *buffer,char *format,...); /* ANSI */
Возвращаемое значение
Возвращает количество напечатанных литер. Если име-
ла место ошибка, возвращаемое значение отрицательно.
Пример
#include
#include
main()
{
char * msg="Целыми форматами являются:";
int number=10;
double num=345.2356;
printf("%s Hex: 0%x, Decimal:%d, Octal: %o\n",
msg, number, number, number);
printf("\n Точность плавающей точки
для PI: %.2f, %.4f, %.8f\n", PI,PI,PI);
printf("\n %.4f Экспоненциальный формат : %E\n",
num,num);
}
link
Комментариев нет:
Отправить комментарий