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

8.1. Консольный ввод-вывод

К консольным операциям ввода-вывода относят операции ввода с клавиатуры и вывода на экран. Рассмотрим работу некоторых функций консольного ввода-вывода.

1. int getche(void). Ожидает нажатия клавиши и возвращает код символа. Символ отображается на экране. Прототип функции содержится в файле conio.h.

2. int getch(void). Ожидает нажатия клавиши и возвращает код символа. Символ не отображается на экране. Прототип функции содержится в файле conio.h.

3. int putchar(int c). Вывод символа на экран в текущую позицию. Прототип функции содержится в файле stdio.h.

4. int getchar(void). Буферизированный ввод символов. Требует нажатия клавиши Enter. Прототип функции содержится в файле stdio.h.

5. int kbhit(void). Возвращает "1" если нажата какая-либо клавиша и "0" если не нажата. Прототип функции содержится в файле conio.h.

В следующем примере программа выводит на экран введенный с клавиатуры символ. Если символ не введен, то ожидания не происходит.

int c;

if (kbhit()){

c=getch();

putchar(c);

}

Следующая строка будет ожидать нажатия любой клавиши.

while(!kbhit());

6. char *gets(char *s). Ввод строки с клавиатуры. Окончание ввода по клавише Enter. Функция автоматически в конце строки ставит символ с кодом ноль. Прототип функции содержится в файле stdio.h.

7. int puts(char *s). Вывод строки на экран. Всегда происходит переход на новую строку. Прототип функции содержится в файле stdio.h. Следует отметить, что функция puts работает быстрее функции форматированного вывода printf.

8. int printf(const char *format, …). Форматный вывод информации на экран. Функцию можно использовать следующим образом

int printf(форматная строка, список аргументов);

Форматная строка ограничена кавычками и может включать произвольный текст и управляющие команды. Текст из форматной строки просто копируется в выходной поток. Список аргументов включает выражения, значения которых должны быть выведены на экран. Количество аргументов и их типы должны соответствовать последовательности управляющих команд. Для каждого аргумента должна быть указана своя команда в форматной строке. Управляющая команда имеет следующую форму:

%флаги ширина_поля.точность команда

Символ % является признаком управляющей команды. Управляющая команда не должна содержать пробелы. Перечислим возможные команды форматной строки.

d

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

u

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

o

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

x или X

шестнадцатеричное целое без знака

f

вещественное значение

e или E

вещественное значение в экспоненциальной форме

c

символ

s

строка

p

значение адреса

Рассмотрим пример.

int a=10;

float b=1.15;

printf(“Целое a=%d вещественное b=%f”, a,b);

Значения переменных a и b будут подставлены в текст форматной строки вместо соответствующих управляющих команд.

Флаги являются необязательной частью форматной строки.

-

Выводимое значение выравнивается по левому краю. По умолчанию — по правому.

+

Если выводимое значение имеет знаковый формат, то знак выводится всегда. По умолчанию выводится только знак “-“.

#

При использовании флага с командами “o” и “x” любое ненулевое значение выводится с предшествующим 0 или 0x.

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

Примеры указания ширины поля и точности:

%7d — вывод целого десятичного в поле из семи позиций;

%8.3f — вывод вещественного числа в поле из восьми позиций и тремя цифрами после запятой.

9. int scanf(const char *format, …). Читает последовательность символов из входного потока и интерпретирует их в соответствии с форматной строкой как целые числа, вещественные числа, символы, строки. Форматная строка работает подобно функции printf. Каждый аргумент должен быть указателем на переменную, в которую будет записано очередное значение данных. Форматная строка может содержать те же управляющие команды, что и функция printf кроме команды %p.

Пример ввода данных с клавиатуры.

int a;

float b;

scanf(“Введите: a=%d b=%f”,&a,&b);