Форматированный вывод данных
Для функции printf приемлема следующая форма операторной записи:
printf ("СтрокаФормата", [Аргументы]);
где:
СтрокаФормата состоит из необязательных символов, приводимых пользователем, и символов, определяющих собственно спецификацию (-ции) формата(-ов) преобразования значений данных из машинного представления (последовательности нулей и единиц) в требуемый;
Аргументы – одно либо несколько имен соответственно объектов и ссылок на их адреса, перечисленных через запятую. Адрес памяти, которому поставлен в соответствие простой объект, извлекается операцией взятия адреса &, то есть описывается как &ИмяОбъекта.
Спецификации форматного вывода
Обобщенно спецификация формата вывода имеет в функции printf следующий вид (в в квадратных скобках ”[]” указаны необязательные элементы):
%[Флаги][Ширина][.Точность][Модификатор]Тип
где:
Флаги – необязательная последовательность символов, указывающих форму вывода (выравнивание вывода, знак числа, десятичная точка, конечные нули, восьмеричные и шестнадцатеричные префиксы);
Флаг | Название | Описание |
– | знак минуса, код ASCII #45 | выводимое значение выравнивается по левому краю в пределах минимальной ширины поля (если флаг не указан – по правому) |
+ | знак плюс | всегда указывать знак (+ или –) для выводимого десятичного числового значения (если флаг не указан, то знак выводится только для отрицательных чисел) |
пробел | помещать перед результатом пробел, если первый символ значения не знак. Символ + имеет больший приоритет, чем пробел. Используется только для десятичных числовых значений. | |
# | диез | «альтернативная форма» вывода значения |
символ нуля | дополнять поле символом '0' до ширины, указанной в поле ширина управляющей последовательности. Символ «минус» имеет больший приоритет, чем '0'. Используется для типов d, i, o, u, x, X, a, A, e, E, f, F, g, G. Для типов d, i, o, u, x, X, если точность указана, этот флаг игнорируется. Для остальных типов поведение не определено. |
Ширина – максимальное число выводимых символов с учетом дополнения нулями и пробелами;
Точность – максимальное число позиций, предоставляемых для вывода значений данных. Спецификатор звездочка '*' в позициях Ширина и/или Точность означает, что число выводимых символов определяется текущим значением аргумента.
Модификатор замещает размер аргумента, принятый по умолчанию,
например: h – short int;
l – long int;
L – long double;
Тип – символ типа преобразования данных. Значения типов (спецификаторы) формата вывода:
Символ формата | Тип | Описание |
%i | int | десятичное целое число |
%d | int | десятичное целое число |
%o | int | восьмеричное беззнаковое число (без нуля слева) |
%u | unsigned int | десятичное беззнаковое целое число |
%x, %X | int | шестнадцатеричное беззнаковое число (без '0х' или '0Х' слева) |
%ld | long | десятичное целое число |
%lo | long | восьмеричное беззнаковое число (без нуля слева) |
%lu | unsigned long | десятичное беззнаковое целое число |
%lx, %lX | long | шестнадцатеричное беззнаковое число (без '0х' или '0Х' слева) |
%с | char | одиночный символ |
%s | строка символов | строка символов |
%f, %F | float/double | десятичное вещественное число c фиксированной точкой, количество знаков в дробной части по умолчанию равно 6 |
%e, %E | float/double | десятичное вещественное число с плавающей точкой, количество знаков в дробной части по умолчанию равно 6 |
%g, %G | float/double | десятичное вещественное число (в виде %f или %е в зависимости от значения) |
%lf,%lF | double / long double | десятичное вещественное число c фиксированной точкой |
%le, %lE | double / long double | десятичное вещественное число с плавающей точкой |
%lg, %lG | double / long double | десятичное вещественное число (в виде %f или %е в зависимости от значения) |
Пример 1.
//Программа форматированного вывода символов
#include <stdio.h>
void main(){
char s='Z';
printf("\n\t%c",s);
printf("\n\t%5c",s);
printf("\n\t%-5c",s);
}
Пример 2.
//Программа форматированного вывода целого числа со знаком
#include <stdio.h>
void main(){
int g=123;
printf("\n%d",g);
printf("\n%+d",g);
printf("\n% d",g);
}
Пример 3.
// Программа форматированного вывода вещественного числа
#include <stdio.h>
void main(){
float p=164.153;
printf("\n%f",p);
printf("\n%.2f",p);
printf("\n%12.2f",p);
printf("\n%4.1f",p);
printf("\n%E",p);
}
Дата добавления: 2015-02-16; просмотров: 731;