Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Пожалуйста, введите Ваше имя: Петр Иванов Подтвердите, Ваше имя: Петр Иванов

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

Таким образом, функция gets() прекрасно подходит для ввода в программу строк.

Функция getchar()

Функция getchar() вводит с клавиатуры единичный символ. Для большинства компиляторов безразлично, к какому типу (char или int) вы отнесете вводимый символ, что обусловлено способом определения сим- вольной переменной в K&R-стандарте языка Си (двойственность символьных данных подробно обсужда- лась в главе 4).

Для ввода символа можно использовать оба этих формата:

int letter; char letter; letter = getchar(); letter = getchar();

Обратите внимание на то, что вызов функции getchar() осуществляется не так, как вызов функций, кото- рые мы рассматривали раньше. Вместо того чтобы поставить имя функции в начало строки инструкции, мы относим его к переменной с помощью знака «равно». Эта запись означает: «Присвоить переменной letter значение, полученное в результате выполнения функции getchar()». Практически, функция getchar() рассматривается программой как значение переменной (рис.5.3). При выполнении этой инструк- ции вызывается функция getchar() и осуществляется ввод символа, который присваивается переменной. Функция getchar() не имеет аргумента. Поэтому круглые скобки после имени функции остаются пустыми.

Когда пользователь нажимает клавишу, getchar() отображает введенный символ на экране. В данном слу- чае нажимать Enter нет необходимости, так как getchar()

Рис. 5.3. Функция getchar()

вводит только один символ, после чего программа немедленно продолжает работу. Символ присваивается переменной, как только вы нажали какую-либо клавишу.

Для чего может понадобиться ввод единичного символа? Вероятно, вам приходилось видеть программы, в которых необходимо ответить «Да» или «Нет» в ответ на запрос, или выбрать один из пунктов предло- женного меню. Функция getchar() идеально подходит в этих случаях, ведь при работе с ней нет необходи- мости нажимать Enter, ввод одного из предложенных на выбор символов позволяет немедленно продол- жить выполнение программы.

Если значение переменной введено с помощью функции getchar(), оно, независимо от того, определена переменная как int или как char, может быть отображено с помощью функции putchar() или printf(). В по- следнем случае используется указатель формата %c:

/*getchar.c*/ main()

{

int initial;

puts("Пожалуйста, введите следующий инициал."); initial=getchar();

putchar('\n'); putchar(initial); putchar('\n'); printf("%c", initial);

}

Данная программа вводит символ в переменную initial, а затем отображает значение переменной на дис- плее, используя функции putchar() и printf(). Если в качестве инициала вы ввели букву 'А', то на экране увидите эту букву, повторенную трижды на отдельных строках. Первый раз она появляется при вводе ее с

клавиатуры, еще два раза— в результате выполнения инструкций программы. Как правило, после ввода символа большинство компиляторов не выполняет автоматический перевод на новую строку.

Используя указатель формата %d, можно отобразить на экране ASCII-код символа:

/*ascii.c*/ main()

{

int letter; letter=getchar(); printf("ASCII-кодом символа \

%c является %d\n", letter, letter);

}

Здесь мы присваиваем значение переменной letter, используя функцию getchar(), а затем, используя функцию printf(), выводим на экран значение переменной, записанное в двух форматах. Указатель фор- мата %c обеспечивает отображение символа в таком виде, как он был введен с клавиатуры, а указатель формата %d преобразует значение переменной в целое число, ASCII-код данного символа.

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