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

Оператор вызова функции printf () имеет следующую структуру:

printf(форматная_строка, список_аргументов);

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

В примере 1 оператор printf ("\na="); содержит текст ("а=") и управляющие символы ("\n"). Текст выводится на экран в том виде, в котором он записан. Управляющие символы влияют на рас­положение на экране выводимых знаков. В результате выполнения этого оператора на экран с новой строки выведутся символы а=.

Признаком управляющего символа является значок \. Ниже приводится их список:

\n – перевод строки;

\t – горизонтальная табуляция;

\r – возврат курсора к началу новой строки;

\а – сигнал-звонок;

\b – возврат на один символ (одну позицию);

\f – перевод (прогон) страницы;

\v - вертикальная табуляция.

Оператор printf (“\nПлощадь треугольника = %f ”, s) ; содер­жит все виды параметров функции printf.

Список аргументов состоит из одной переменной s. Ее значение выводится на экран. Пара символов %f является спецификацией формата выводимого значения переменной s. Значок % — признак формата, а буква f указывает на то, что выводимое число имеет вещественный (пла­вающий) тип и выводится на экран в форме с фиксированной точкой. Например, если в результате вычислений переменная s получит значение 32,435621, то на экран выведется:

Площадь треугольника=32.435621

Спецификатор формата определяет форму внешнего представ­ления выводимой величины. Вот некоторые спецификаторы фор­мата:

%с — символ;

%s — строка;

%d — целое десятичное число (тип int);

%u — целое десятичное число без знака (тип unsigned);

%f — вещественные числа в форме с фиксированной точкой;

%е— вещественные числа в форме с плавающей точкой (с мантиссой и порядком).

Например, после выполнения следующих операторов

float m,p;

int k;

m=84.3; k=-12; p=32.15;

printf ("\nm=%f\tk=%d\tp=%e",m,k,p) ;

на экран выведется строка:

m=84.299999 k=-12 p=3.21500e+01

Здесь дважды используемый управляющий символ табуляции \t отделил друг от друга выводимые значения. Из этого примера видно, что соответствие между спецификаторами формата и эле­ментами списка аргументов устанавливается в порядке их записи слева направо.

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

printf (“\nm=%5.2f\tk=%5d\tp=%8.2e\tp=%11.4e”,m,k,p,p) ;

В результате на экране получим:

m=84.30 k= -12 р = 32.15 р = 3.2150е+01

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

К спецификаторам формата могут быть добавлены модифика­торы в следующих вариантах:

%ld — выводlong int;

%hu — выводshort unsigned;

%Lf — выводlong double.

Пример

#include <stdio.h>

#include <math.h>

Main()

{

char * msg="Целыми форматами являются:";

int number=10;

double num=345.2356;

printf("%s Hex: 0%x, Decimal:%d, Octal: %o\n",

Наши рекомендации