printf()

Модераторы: Romeo, Hawk, Absurd, WinMain, DeeJayC

Ответить
Dim...ON
Сообщения: 75
Зарегистрирован: 28 янв 2008, 01:10
Контактная информация:

printf()

Сообщение Dim...ON » 23 фев 2008, 19:38

кто знает где можно почитать про эту функцию и ей же подобные
а также о её директивах типа "%d" и пр.

заранее спасибо

Kankay
Сообщения: 9
Зарегистрирован: 22 фев 2008, 13:43

Re: printf()

Сообщение Kankay » 23 фев 2008, 22:35

Смотри в MSDN :)
А вот в общих словах про printf:

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

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

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

т.е. например:

Код: Выделить всё

printf("количество элементов %i, максимальный: %d", nCount, dMax);
Управляющая_строка, задающая формат вывода данных, помимо обычного текста содержит команды преобразования, которые начинаются с символа "%", за которым следуют символы и цифры, задающие правила вывода аргументов (Аргумент1, Аргумент2,...). Формат определяется следующим образом:

%[флажки][ширина][.точность][F|N|h|l|L] преобразование


( Конструкции в квадратных скобках могут отсутствовать, а символ "|" (вертикальная черта) свидетельствует о том, что здесь может использоваться одна из перечисленных возможностей. )

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


Ширина - задает минимальную ширину поля вывода (в символьных позициях).
Любое свободное пространство обычно заполняется пробелами
Но если значение ширины начинается с цифры 0, эти добавляемые пробелы заменяются нулями.
В качестве ширины можно также указать символ * ("звездочка"), что приводит к использованию значения следующего аргумента типа int в качестве ширины поля.
В этом случае задается два значения: целое значение, задающее минимальную используемую ширину, и значение, выводимое в этом поле.
Значение, задающее ширину, должно располагаться перед выводимым значением.
Если указана нулевая ширина, то вывод производится в поле переменной ширины и дополняется ведущими нулями.
Можно задавать меньшую ширину, чем требуется, для представления значения.
Ширина поля вывода увеличивается по мере необходимости, чтобы обеспечить вывод значения без отсечения.
Точность - если в этом месте форматной строки присутствует точка, то следующее за ней значение представляет точность, используемую для представления форматируемого результата. Интерпретация точности зависит от типа форматируемого элемента.
За точкой должно следовать целое значение. Это значение по умолчанию равно 0, что означает отсутствие компонента точности.
Для символов преобразования d, i, o, u, x и X по умолчанию это значение равно 1.
Для символов e, E и f по умолчанию это значение равно 6.
Для g и G - переменному числу значащих цифр.
Для символов s и c - полному числу символов.
Для символов преобразования g и G точность представляет максимальное число значащих цифр сформатированного результата.
Для преобразований e, E и f точность равна числу используемых десятичных позиций, а последняя цифра округляется.
В случае использования s точность указывает максимальное число используемых символов строки.
Точность никак не влияет на результат с использованием символа преобразования c - всегда выводится один символ.
Для преобразований d, i, o, u, x и X выводится столько цифр, сколько указано точностью, дополненных, при необходимости, слева цифрами 0
Один из нескольких модификаторов позволяет указать характеристики, связанные с размером выводимого значения. Требуемый тип данных выбирается соответствующим символом преобразования:

F - дальний (far-) указатель;
N - ближний (near-) указатель;
h - значение типа short int;
l - значение типа long;
L - значение типа long double.

Kankay
Сообщения: 9
Зарегистрирован: 22 фев 2008, 13:43

Re: printf()

Сообщение Kankay » 23 фев 2008, 22:38

продолжение:
Преобразование - задает тип соответствующего аргумента. Программист сам несет ответственность за правильность типа этого аргумента. Например, если используется символ преобразования g, то аргумент должен быть значением с плавающей точкой. Ниже перечислены все допустимые символы преобразования, причем в каждой отдельной команде можно использовать только один из указанных символов.
Флаги задаваемые после %:
% - Выводится символ процента
с - Выводится символ, заданный соответствующим аргументом
d - Выводится десятичное число со знаком (тип double)
e - Значение типа double будет выведено в экспоненциальной форме, например: 1.045е+12.
E - Аналогично предыдущему, но в результат буде помещена прописная (заглавная) буква Е
f - Значение типа double будет выведено в десятичном формате, например: 1234.56.
x - шестнадцатеричное число использующее цифры от 0 до 9 и строчные буквы a b c d e f
X - шестнадцатеричное число использующее цифры от 0 до 9 и прописные буквы A C D E F
u - беззнаковое десятичное число
i - Выводится десятичное число со знаком (тип int)
n - указатель на переменную типа int
o - беззнаковое восьмеричное число

ну и так далее, а то мне что-то надоело :D

Dim...ON
Сообщения: 75
Зарегистрирован: 28 янв 2008, 01:10
Контактная информация:

Re: printf()

Сообщение Dim...ON » 24 фев 2008, 02:32

большой СПС!
очень содержательно

Ответить