Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР5-С++-22 марта-2012.doc
Скачиваний:
12
Добавлен:
15.09.2019
Размер:
1.48 Mб
Скачать

1.10. Функции ввода и вывода

Функции ввода и вывода уже были достаточно подробно рассмотрены в лабораторной работе 2, поэтому в данной работе кратко рассмотрим только две функции printf() и scanf().

1.10.1. Функция printf

Функция printf предназначена для вывода форматированной последовательности данных. Может иметь один или несколько параметров, первым из которых является строка, называемая форматной строкой. За форматной строкой следует список вывода, который может содержать переменные, константы, выражения разных типов. Форматная строка задает способ преобразования и представления на печати элементов списка вывода, а также определяет, сколько элементов содержит список вывода и какого они типа.

Формат функции вывода:

printf("строка_формата", список_переменных);

Например, printf("Получены значения %d %s\n",g,p). Здесь "Получены значения %d %s\n" - форматная строка, g,p - список вывода. Или printf("Вы ввели число").Здесь нет списка вывода.

Формат функции ввода:

scanf("строка_формата", &список_переменных);

Например,

printf (”Значение числа Пи равно %f\n”, pi);

Форматная строка может содержать символы, которые будут выведены в том виде, в каком они есть (например: Получены значения), спецификации преобразования, которые начинаются со знака % (например: %d, %s), последовательности переключения кода (escape sequences) (например: \n, что означает перевод курсора на следующую строку).

Спецификация преобразования имеет следующий вид:

%[флаг][ширина][. точность][размер]тип

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

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

В табл.5.2 приведены спецификации преобразования.

Таблица 5.2

Спецификации преобразования для функции printf

Элемент специфи­кации

Значение

флаг (необязательный элемент)

-

Прижать число при выводе к левому краю выделенного поля

0

Заполнить лишнее пространство нулями вместо пробелов

+

Всегда выводить знак числа (+ или -)

пробел

Пробел на месте знака, если значение положительно

#

Выводить 0 перед восьмеричным или 0x перед шестнадцатеричным значением

ширина (необязательный элемент)

n

Минимальная ширина поля в n символов

точность (необязательный элемент)

.n

Не более n знаков после точки для числа в форме e, E, f

размер (необязательный элемент)

h

Короткое целое (short int)

l

Длинное целое (long int)

тип (тип преобразования)

d

Десятичное целое число со знаком

i

То же, что и d

o

Восьмеричное целое число без знака

u

Десятичное целое число без знака

x

Шестнадцатеричное целое число без знака, цифры в нижнем регистре

X

То же, что х, но цифры в верхнем регистре

f

Число со знаком в форме [-]dddd.dddd (число с плавающей точкой)

e

Число со знаком в форме [-]d.dddde[+/-]ddd (число с плавающей точкой в экспоненциальной форме)

g

Число со знаком в форме e или f

E

Число со знаком в форме [-]d.ddddE[+/-]ddd (число с плавающей точкой в экспоненциальной форме)

G

Число со знаком в форме E или F

c

Один символ

s

Строка

Форматная строка может содержать:

  • символы печатаемые текстуально;

  • спецификации преобразования;

  • управляющие символы.

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

\n – управляющий символ новая строка;

\t – табуляция;

\a – звуковой сигнал и др.

Также в форматной строке могут использоваться модификаторы формата, которые управляют шириной поля, отводимого для размещения выводимого значения. Спецификатор формата – запись, которая начинается со знака % и которая определяет форму внешнего представления выводимой величины. Модификаторы – это числа, которые указывают минимальное количество позиций для вывода значения и количество позиций ля вывода дробной части числа:

%[-]m[.p]C, где

– – задает выравнивание по левому краю,

m – минимальная ширина поля,

p – количество цифр после запятой для чисел с плавающей точкой и минимальное количество выводимых цифр для целых чисел (если цифр в числе меньше, чем значение р, то выводятся начальные нули),

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

Запомните:

Спецификатор должен соответствовать типу выводимой переменной.

С помощью функции printf() можно выводить сразу несколько переменных. Для этого используется следующая конструкция:

int num_i;

float num_f;

num_i = 5;

num_f = 10.5;

printf("num_i = %d, num_f = %f", num_i, num_f);

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

num_i = 5, num_f = 10.5

Кроме спецификаторов в функции printf() используются управляющие символы, такие как перевод строки \n, табуляции \t и др. Например, если в ранее рассмотренном примере необходимо вывести значения переменных не в строчку, а в столбик, то необходимо переписать функцию printf() следующим образом:

printf("num_i = %d,\n num_f = %f", num_i, num_f);

Аналогично используется и символ табуляции.