Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИИ_ПО_ПРОГРАММИРОВАНИЮ_ПРЕПОД_3403_220301.doc
Скачиваний:
27
Добавлен:
06.11.2018
Размер:
845.31 Кб
Скачать

9. Функции ввода и вывода символов.

9.1 Функции getchar() и putchar().

Функция getchar() получает один символ, поступающий с пульта терминала (клавиатуры), и передает его выполняющейся в данный момент программе.

Функция putchar() получает один символ, поступающий из выполняющейся в данный момент программы, и выводит его на экран дисплея.

/* ПРОГРАММА:

get_put.c - ввод символа с клавиатуры и вывод его на экран дисплея.

*/

/*#############################################*/

/*============================= include */

#include<stdio.h>

/*============================= main() */

main()

{/*.---------------------------.begin main() */

char ch;

ch = getchar(); /* 1. ввод одного символа с клавиатуры в программу */

putchar (ch); /* 2. вывод символа на экран дисплея */

return 0;

}/*.---------------------------.end main() */

/*#############################################*/

РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ.

Ввод символа с клавиатуры и вывод его на экран дисплея.

ПОЯСНЕНИЯ К ПРОГРАММЕ.

  • Функция getchar() аргументов не имеет (т. е. при ее вызове в круглые скобки не помещается никакая величина). Функция getchar() получает с клавиатуры очередной символ и возвращает его значение выполняемой программе. Например, если указанная функция получает с клавиатуры букву Q, ее значением в данный момент будет эта буква. Оператор 1, присваивает значение функции getchar() переменной ch.

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

putchar ('S'); /* вывод на экран символа S */

putchar ('\n'); /* перевод строки */

putchar ('\007'); /* сигнал - звонок */

putchar (ch); /* вывод на экран переменной символьного типа */

putchar (getchar()); /* ввод символа с клавиатуры и вывод его на экран */

Наша программа может быть представлена в следующем виде:

#include<stdio.h>

main()

{/*.---------------------------.begin main() */

putchar (getchar());

return 0;

}/*.---------------------------.end main() */

Такая запись компактна и не требует введения вспомогательной переменной char ch;. Кроме того, в результате компиляции такая программа оказывается более эффективной.

***************************************************************

ПРИМЕЧАНИЕ.

Результат работы функции getchar() зависит от того, есть ли или нет в системе программирования буферизованный ввод.

При выполнении данной программы (любой из двух ее версий) вводимый символ в одних вычислительных системах немедленно появляется на экране («эхо - печать»), в других же ничего не происходит до тех пор, пока вы не нажмете клавишу [ввод (Enter)].

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

Второй случай служит примером буферизованного ввода, когда вводимые символы собираются и помещаются в некоторую область временной памяти, называемую "буфером". Нажатие клавиши [ввод] приводит к тому, что блок символов (или один символ, как это происходит в нашей программе) становится доступным программе.

Вследствие неоднозначности работы функции getchar() в различных системах программирования ее стараются не использовать в интерактивных режимах работы, а стремятся использовать функции небуферизованного (прямого) ввода getch() и getche().

Зачем нужны буферы? Во-первых, оказывается, что передачу нескольких символов в виде одного блока можно осуществить гораздо быстрее, чем передавать их последовательно по одному. Во-вторых, если при вводе символов допущена ошибка, вы можете воспользоваться корректирующими средствами терминала (например, клавишей Backspace), чтобы ее исправить. Когда вы нажмете клавишу [ввод], будет произведена передача откорректированной строки.