ФОРМАТИРОВАННЫЙ ВЫВОД

Для описания функций форматированного вывода printf, fprintf,

sprintf используются следующие метаобозначения:

^ Пробел (символ ^на самом деле не печатается!). \ f Используется только один из перечисленных элементов. [] Используется только один или не используется ни одного из перечисленных элементов.

Замечание. Для использования функций printf, fprintf, sprintf

в программу необходимо вставить команду препроцессора

#include <stdio.h>

Функции printf, fprintf и sprintf имеют переменное число аргументов. Число и типы аргументов должны соответствовать спецификациям преобразования в форматной (управляющей) строке. printf — записать аргументы в стандартный файл вывода stdout в соответствии с форматной строкой format. Определение: int printf (^rmat [,arg]...) char •format;

fprintf - записать аргументы в поток stream в соответствии с форматной строкой format.

Определение: int fprintf (stream, format [,arg]...) FILE * stream;

char *format;

sprintf — записать аргументы в массив символов s в соответствии с

форматной строкой.

Определение: int sprintf (s, format [,arg]...) char *s, *format;

Примep

printf ("error no. %d: %s", err, mesg);

Печатается значение переменной err как десятичное целое и значение mesg как строка. Результат форматированного вывода будет выглядеть следующим образом (с точностью до значения переменных):

error no. 13: cannot access file

Спецификация преобразования

%[выравнивание] [ширина][дополнительныв символ] / ^ 1

Выравнивание вправо: по умолчанию. Выравнивание влево: символ —.

Ширина определяет минимальное число выводимых символов. Она может задаваться целым числом; если значение соответствующей переменной превышает явно заданную ширину, то выводится столько символов, сколько необходимо. Символ * обозначает, что число выводимых символов будет определяться текущим значением переменной.

Пример

printf ("%*d", width, number);

Спецификация вывода символа

% /—7 [ширина] с

Примеры

%с А

%3с WA %-3с AW

Спецификация вывода строки

%[-] [ширина] [.точность] s

Точность определяет число печатаемых символов. Если строка длиннее, чем заданная точность, то остаток строки отбрасывается.

Пример

%10s abcdefghijklrnn

%-10.5s abcde^^

%10.5s )W^abcde

Спецификация вывода целого числа со знаком

% Hf^f [ширина] [l]d

Для отрицательных чисел автоматически выводится знак - (минус). Для положительных чисел знак + (плюс) выводится только в том случае, если задан признак +; если в спецификации задан пробел ^>, то в позиции знака выводится пробел. Символы преобразования

l — необходим для данных типа long';

d - определяет вывод данных типа int в десятичном формате

со знаком.

Примеры

%d 43

%+d +43

%d

Спецификация вывода целого числа без знака

("I % [-][#] [ширина] [1])

Символ # определяет вывод начального нуля в восьмеричном формате или вывод начальных Ох или ОХ в шестнадцатеричном формате. Символ 1 необходим для данных типа long. Символы преобразования

u — десятичное без знака;

о - восьмеричное без знака;

х — шестнадцатеричное без знака;

Х - шестнадцатеричное без знака с прописными буквами А - F.

Примеры (для 32-разрядных чисел)

%u 777626577

%о 5626321721

%#о 05626321721

%х 2e59a3dl

%#Х OX2E59A3D1

Спецификация вывода числа с плавающей точкой

%[-] /+ [#] [ширина] [.точность] 1 Е

Для отрицательных чисел автоматически выводится знак - (минус). Для положительных чисел выводится знак + (плюс), если задан признак +; если в спецификации задан пробел ^, то в позиции знака выводится пробел.

Завершающие нули не выводятся, если в спецификацию не включен признак #. Этот признак также обусловливает вывод десятичной точки даже при нулевой точности.

Точность определяет число цифр после десятичной точки для форматов f, е и Е или число значащих цифр для форматов g и G. Округление "делается отбрасыванием. По умолчанию принимается точность в шесть десятичных цифр.