Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Функция вывода printf()




 

В консольных приложениях для вывода данных любого типа на экран часто использу

ется стандартная функция printf(...), имеющая такой прототип:

 

int printf("форматная строка", arg1,arg2,....);

 

После форматной строки может быть перечислено через запятые любое количество аргументов, численные значения которых должны быть выведены. Аргументами могут быть переменные, константы, арифметические выражения, вызовы функций - словом, все, что имеет или возвращает одно численное значение.

Функция возвращает количество выведенных байт, которое обычно игнорируется.

Форматная строка может содержать объекты трех типов:

 

- обычные текстовые символы, имеющие графическое начертание

и обозначенные на клавиатуре, которые должны быть выведены;

- спецификации преобразования формата вывода аргументов;

- управляющие символьные константы.

 

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

 

%d - знаковое целое;

%u - беззнаковое целое;

%x - целое в 16-ричной записи;

%f - вещественное с фиксированной точкой

в виде d...d.dddddd;

%e - вещественное с плавающей точкой

в виде d.dddddE-dd;

%c - одиночный символ;

%s - строка символов;

%p - указатель.

Примечание. Более полная информация по спецификациям

приведена ниже.

 

Задача функции printf() - вывести форматную строку, преобразуя значение каждого аргумента согласно его спецификации формата в символьное представление.

Во всех спецификациях формата перед буквой-спецификатором можно указывать число позиций, разрешенных для вывода, например:

 

printf("%5c %8d %8x",a,a,a);

 

Пробелы между соседними спецификаторами формата не обязательны. Однако наличие пробелов между ними гарантирует, что даже если все выделенное поле будет заполнено целиком, соседние числа не сольются воедино при печати, и их можно будет легко различить. Это объясняется тем, что любые символы (включая пробелы),

содержащиеся в форматной строке и не входящие в состав спецификатора формата, обязательно выводятся на печать.

Если выводимое число не заполняет выделенное поле целиком, оно располагается в правой части поля, а незанятые позиции слева заполняются пробелами. Если в состав спецификации добавить знак минус сразу после знака %, то число будет выравниваться в левую сторону и дополняться пробелами справа.

В форматах вывода вещественных чисел допустимо дополнительно указывать число цифр после десятичной точки, которые следует вывести. Так, спецификация %9.5f означает, что для вывода числа разрешается занять 9 позиций и после точки следует напечатать 5 значащих цифр. Если же размеры полей не заданы, то по умолчанию выводятся шесть знаков после десятичной точки для спецификации %f и шесть значащих цифр (с учетом одной цифры в целой части) для спецификации %e.

Если разрешенное поле меньше, чем требуется для вывода числа, то оно автоматически расширяется на требуемое число позиций, так что значащие цифры никогда не пропадают.

Приведем варианты по умолчанию для вещественных переменных. Пусть имеется число a = 1234.56. По умолчанию оно будет выведено так:

 

 

Спецификация формата Будет выведено

------------------------------------------------

 

%f 1234.560000

%e 1.23456E+03

 

При выводе целых чисел типа long или вещественных чисел типа double перед буквой-спецификатором следует указывать прописную латинскую букву l (эль):

 

long k=70000;

double t=0.0032;

...............

printf("\n %ld %lf",k,t);

 

Если требуется вывести только текст, то его следует записать в качестве форматной строки без всяких спецификаторов формата. Если же печатаются только данные, то форматная строка будет содержать только спецификаторы формата.

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...