Форматированный вывод

Функция printf

Две функции: printf для вывода и scanf для ввода (следующий раздел) позволяют преобразовывать численные величины в символьное представление и обратно. Они также позволяют генерировать и интерпретировать форматные строки

Форма записи:

#include <stdio.h> int printf(const char *format[, argument,...]); или упрощенно printf(УправляющаяСтрока, arg1, arg2,...)

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

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

%[флаг][ширина] [. точность ][F|N|h|l ] <символ типа преобразования>

Функция cprintf

Функция

#include <conio.h>

int cprintf(const char *format [, arg,...]);

выполняет вывод с преобразованием по заданному формату. Является аналогом функции стандартной библиотек printf(), но вывод осуществляется в пределах заданного окна. В отличие от printf() функция сprintf() иначе реагирует на специальный символ ‘\n’: курсор переводится на новую строку, но не возвращается к левой границе окна. Поэтому для перевода курсора на начало новой строки текстового окна надо вывести последовательность символов перевода каретки и перехода на следующую строку CR-LF (0х0d, 0x0a) или '\r\n’. Остальные спецсимволы воздействуют на курсор так же, как и для функции стандартного ввода/вывода. Функция возвращает число выведенных байтов, а не число обработанных полей, как это делает функция printf().

Пример: Вывести на экран 5 раз строку "This is a test".

#include <conio.h>

int main(void)

{ int i;

clrscr();

for (i=0; i<5; i++)

cprintf("This is a test\r\n");

}

Отдельные поля спецификации преобразования

Флаги

· (-) Знак минус, который указывает о выравнивании преобразованного аргумента по левому краю его поля. Правая сторона выделенного поля дополняется пробелами.

· (+) Знак плюс указывает, что выводится знак числа «-» или «+».

· (Пробел) Выводится пробел перед числом, если оно положительно. Для отрицательных чисел знак «-» выводится всегда.

· (#) Выводится идентификатор системы счисления для целых чисел:

-0 перед числом, выводимым в восьмеричной системе счисления;

-0х или 0Х для чисел, выводимых в шестнадцатеричной с/с;

-ничего для чисел, выводимых в десятичной с/с.

Ширина

· (n или 0n)Строка цифр, задающая минимальную ширину поля n. Преобразованное число будет напечатано в поле по крайней мере этой ширины, а если необходимо, то и в более широком. Если преобразованный аргумент имеет меньше символов, чем указанная ширина поля, то он будет дополнен слева (или справа, если было указано выравнивание по левому краю) заполняющими символами до этой ширины. Заполняющим символом обычно является пробел, а если ширина поля указывается с лидирующим нулем, то этим символом будет нуль (лидирующий нуль в данном случае не означает восьмеричной ширины поля).

Точность

· (.)Точка, которая отделяет ширину поля от следующей строки цифр.

· (.0)Для d, i, o, u, x точность по умолчанию. Для e, E, f десятичная точка отсутствует.

· (.nnn) Строка цифр (точность), которая указывает максимальное число символов строки, которые должны быть напечатаны, или число печатаемых справа от десятичной точки цифр для переменных типа float или double. По умолчанию точность равна 6.

Модификатор

· (l) Модификатор длины l, который указывает, что соответствующий элемент данных имеет тип long, а не int.

· (h) Модификатор длины h, который указывает, что соответствующий элемент данных имеет тип short, а не int.

· (F) Аргумент рассматривается как far–указатель.

· (N) Аргумент рассматривается как near–указатель.

Пример:

Р=15.6734;

По умолчанию данное число принимает вид:

Р=15.673400 (количество символов после десятичной точки по умолчанию равно 6)

12 – Результат: 15.673400

.12– Результат: 15. 673400000000

12.– Результат 16 (Если дробная часть <=5, то округляется в сторону уменьшения, а если >5 - в сторону увеличения)

12.2– Результат: 15.67


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



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