Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по С++.doc
Скачиваний:
27
Добавлен:
20.08.2019
Размер:
2.26 Mб
Скачать

2 Позиции отводятся для знака числа и точки.

При выводе значений с помощью формата типа “%е” выводимое значение со знаком имеет форму:

[ - ] m.dddd +/- 0DD

где т - один разряд значения мантиссы до точки;

dddd - нуль и более (р) разрядов мантиссы после точки;

DD - два десятичных разряда порядка.

Для вывода форматом типа "%е" минимальное значение поля w можно оп­ределить по формуле: w = (р + 1) + 6. Кроме р + 1 позиции для размещения ман­тиссы требуются еще 6 позиций: 4 позиции для размещения порядка и по од­ной позиции для знака числа и точки.

Если поле w, определенное в формате %f, недостаточно для размещения целой части вещественного значения, система выделяет минимальное поле для ее размещения (поле для знака + не выделяется).

Если поле W, определенное в формате, больше минимального, то выводимое значение смещается в поле вправо или влево в зависимости от значения flags, оставляя слева или справа пробелы.

При выводе вещественных значений форматами типа "%f” и "%е" точка выводится только тогда, когда число выводится с дробной частью. То есть для форматов вида "%w.0f, "%.0f, "%w.0e" и "%.0е” точка не выводится. Послед­няя десятичная цифра выводимого значения может быть результатом округления.

На рис. ниже приведен пример программы для вывода вещественного значе­ния различными вариантами форматов типа f и е и результаты ее выполнения.

Из результатов, приведенных на рис., очевидно, что при выводе данных типа float форматом типа е:

1) для р = 0, то есть для форматов "%ю.0е" и "%.0е", выводится только 1 разряд округленной мантиссы до точки;

2) для р >= 1 выводится 1 разряд до точки и р разрядов после точки; если число содержит > р + 1 разряда числа, то выводится только часть числа, округ­ленная до р + 1 разряда.

Пример форматного вывода значений в строку с помощью sprintf:

sprintf (str, “ i = %d r = %f”, i, r);

Значения переменных i и r выводятся в строку str со своими именами, на­пример, в виде: i = 123, r = 4.567890.

Форматный вывод символьных и строковых данных

Для вывода символов используется формат типа в”%с", а для вывода строк формат типа "%s". Особенности вывода символов и строк рассмотрим на примерах. Ниже приведена программа, с помощью которой можно вывести в файл символы, заданные i-кодами, по 10 значений в строке.

(пример старой версии)

# include <stdio>

FILE *f;

void main ()

{int i; f = fopen ( “14vivsim.res”, “w” ) ;

for ( i = 27; i < 255; i++)

{ fprintf (f, “ %3d = %c”, i, i ) ;

if ( (i - 26) % 10 = = 0 ) fprintf (f, “\n”) ; } fclose (f) ;

}

При выводе символов и в списках форматов можно использовать символь­ные константы - управляющие коды и esc-последовательности. Примеры управ­ляющих кодов даны в табл. ниже.

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

Код

Назначение кода

\n

новая строка

\b

возврат на 1 символ

\r

возврат в начало строки

\f

прогон бумаги до конца страницы

\\

вывод символа “\”

\’

вывод апострофа

\”

вывод кавычек

\?

вывод знака вопроса

\a

короткий звуковой сигнал

\07

“—“

В программе на рис. 16 из каждой строки исходных данных вводится 15 символов в элементы массива:

d[ i ] [ 0 ] / d[ i ][ 14 ]. В d[ i ][15] вводится признак кон­ца строки: d[ i ][15] = \n. В соответствии с правилами работы функции fgets формируется: d[ i ][16] = \0. После ввода значения строки d[ i ] оно выводится с помощью fprintf.

Для вывода строк можно использовать следующие виды форматов:

"%s” - вывод всех символов строки;

%ws” - вывод строки в поле w до первого символа \0;

если поле недостаточно, строка выводится полностью;

%w.ps”- вывод р символов в поле w;

"%.рs" - вывод р символов строки в поле w = р.

Ниже приведен пример вывода символьной строки с помощью различ­ных форматов типа %s и результаты ее выполнения.