Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Си_3.doc
Скачиваний:
5
Добавлен:
25.08.2019
Размер:
192 Кб
Скачать
☆

Форматный вывод арифметических данных

  1. Для вывода целых чисел можно использовать форматы вида: “%d”, “%wd”, “%w.pd”, “%.pd”.

При выводе целых чисел форматами d, i, o, x, X значение поля p определяет минимальное количество цифр, которые будут выведены. Если количество выводимых разрядов числа меньше заданного p, то выводимое значение дополняется слева нулями.

  1. Для вывода чисел типа float в форме с фиксированной точкой можно использовать форматы вида: “%f”, “%wf”, “%w.pf”, “%.pf”.

  2. Для вывода чисел типа float в форме с плавающей точкой можно использовать форматы вида: “%e”, “%we”, “%w.pe”, “%.pe”.

Для форматов вида “%f”, “%wf”, “%e”, “%we” по умолчанию p =6.

Для формата типа “%f” выводимое значение со знаком имеет форму:

[-] ccc.dddd,

где ccc – один и более целых разрядов; количество целых разрядов зависит от величины выводимого значения; всегда выводятся все разряды целой части значения;

dddd – p - количество дробных разрядов; для p = 0 дробные разряды и точка не выводятся.

Для вывода форматом типа “%f” минимальное значение поля w можно определить по формуле: w = p + k + 2,

где p - количество дробных разрядов;

k - количество целых разрядов;

2 – позиции для знака числа и точки.

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

[-]m.ddddeDD,

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

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

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

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

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

Если поле w, определённое в формате “%f”, больше минимального, то выводимое значение смещается в поле вправо или влево в зависимости от значения flags, оставляя слева или справа пробелы.

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

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

Для вывода символов используется формат типа “%c”, а для вывода строк - формат типа “%s”.

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

Код

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

\n

новая строка

\b

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

\r

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

\f

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

\\

вывод обратного слэша

\’

вывод апострофа (одинарной кавычки)

\”

вывод кавычек (двойной кавычки)

\?

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

\a

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

\07

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

Замечание Вывод строк допустим с помощью форматов “%s” и недопустим с помощью форматов “%wc”.

Пример

#include <stdio.h>

FILE *fr;

void main ( )

{ char g = ‘d’, *h = “’”, *f = “\МАША\””, *f1 = “\\\\n”;

char b[7] = “ddddd”; r[5] = “eeee”;

fr = fopen (“15vivsim. res”, “w”);

fprintf(fr,

“\ng = ‘%c’, g = ‘%3c’ h = \” %s \”, f = %s , f1 = %s \n”, g, g, h, f, f1);

fprintf(fr,

“\b = %5s r = %5s \n”, b, r);

fclose (fr);

}

Результат выполнения программы:

g = ‘d’, g = ‘ d’ h = “ ’ ”, f = “МАША” , f1 = \\n

b = ddddd r = eeee

Пример Бесформатный ввод и форматный вывод строк двумерного символьного массива

#include <stdio.h>

FILE *fid ,*fr;

void main ( )

{ int i;

char d[3][17];

fid = fopen (“vvv.dat”, “r”);

fr = fopen (“vvv. res”, “w”); fprintf(fr, “\n”);

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

{fgets(d[i], 17, fid);

fprintf(fr, “d[%d] = %s”, i , d[i]);}

fcloaseall();

}

Данные в исходном файле vvv.dat:

111111111111111

222222222222222

333333333333333

Результат выполнения программы(файл “vvv. res”):

d[0] =111111111111111

d[1] =222222222222222

d[2] =333333333333333

Из каждой строки исходных данных вводится 15 символов в элементы массива d[i][0] d[i][14]. В d[i][15] вводится признак конца строки ‘\n’. Затем в соответствии с правилами работы fgets формируется d[i][16] =\0. После ввода значения строки d[i] оно выводится с помощью fprintf.

Для вывода строк могут использоваться форматы вида:

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

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

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

“%.ps” - вывод p символов строки в поле w = p.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]