Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shpory_po_programmirovaniyu_33_33_33_33_33.doc
Скачиваний:
46
Добавлен:
20.09.2019
Размер:
1.36 Mб
Скачать

16. Консольный ввод-вывод. Функции ввода-вывода символов.

В языке Си отсутствуют специальные операторы ввода-вывода. Их заменяют стандартные функции, собранные в "библиотечный файл" stdio.h. Программа, содержащая обращения к функциям ввода-вывода, должна содержать строку подключения этого файла: #include <stdio.h>.

Основные функции ввода-вывода

Рассмотрим шесть наиболее распространенных функций ввода информации с клавиатуры и ее вывода на экран (консольный ввод-вывод): getchar, putchar (для ввода-вывода символа); gets, puts (для ввода-вывода строки); scanf, printf (для форматированного ввода-вывода ); и функцию fflush очистки буфера stdin.

Функция getchar предназначена для ввода символа, не имеет параметров, возвращает целое число - код введенного символа. Обращение имеет вид: getchar(). Выполняя эту функцию, программа приостанавливает свою работу и ждет от пользователя ввода символа и/или нажатия клавиши Enter.

Функция putchar предназначена для вывода символа. Имеет один параметр типа int (код выводимого символа) или char. Обращение имеет вид: putchar(i), где i – выражение, определяющее символ. После вывода символа курсор не переходит к началу новой строки.

Как видно из примера, функция getchar() может использоваться в операторе присваивания. В этом случае код введенного символа присваивается переменной типа int (в примере - переменной ch).

Функции putchar('A') и putchar(65) выводят один и тот же символ 'A', символьной константой и кодом символа (65).

16, 17. Консольный ввод-вывод. Функции ввода-вывода строк. Консольный форматированный ввод данных. Оператор ввода. Форматная строка. Спецификации преобразования.

Функция gets предназначена для ввода строки. Имеет один параметр, задающий адрес области памяти, в которую помещаются символы вводимой строки. В языке Си имя переменной, имеющей строковый тип, является этим адресом. Обращение имеет вид: gets(name)), где name – переменная строкового типа - имя вводимой строки. Выполняя эту функцию, программа приостанавливает свою работу и ждет от пользователя ввода последовательности символов и/или нажатия клавиши Enter.

Функция puts предназначена для вывода строки. Имеет один параметр, задающий адрес области памяти, из которой на экран выводятся символы. Как уже отмечалось, имя переменной, имеющей строковый тип, является этим адресом. Обращение имеет вид: puts(name)), где name – переменная-строка - имя выводимой строки или строка символов, заключенная в кавычки. После вывода строки курсор перемещается к началу новой строки экрана.

18. Консольный форматированный вывод данных. Оператор вывода. Форматная строка. Спецификации преобразования.

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

printf(fs,a1,a2,...)),

где fs – форматная строка, a1, a2, ... - список вывода.

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

Или printf("Вы ввели число").Здесь нет списка вывода.

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

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

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

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

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

Спецификации преобразования для функции 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

Строка

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