Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Нейбауэр А. Моя первая программа на С.doc
Скачиваний:
182
Добавлен:
02.05.2014
Размер:
3.75 Mб
Скачать

Функция 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()

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

Некоторые компиляторы Си и Си++ используют функцию getch(), которая вводит символ без последующего нажатия Enter. Может оказаться, что при работе с getchar(), эти компиляторы требуют нажатия Enter после ввода символа. Проверьте документацию вашего компилятора.

Для чего может понадобиться ввод единичного символа? Вероятно, вам приходилось видеть программы, в которых необходимо ответить «Да» или «Нет» в ответ на запрос, или выбрать один из пунктов предложенного меню. Функция 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 и вводить цифру, ее нельзя будет использовать в математических операциях.