Использование функции getch() в C/C++

Рассмотрим использование функции getch() в C/C+, которая позволяет прочитать ввод символов с клавиатуры.

Основной синтаксис

Хотя это не является частью стандарта C, но это все же функция POSIX C. Таким образом, мы все еще можем использовать эту функцию в Windows/Linux/Mac.

Ниже мы рассмотрим использование этой функции на нескольких примерах, а сам синтаксис функции довольно простой.

Эта функция принимает один символ из стандартного входа (stdin) и возвращает целое число.

Она является частью заголовочного файла <conio.h>, поэтому мы должны включить ее в свою программу.

См. по теме:
- Директива #include в C/C++ с примерами
- #include (директива) в справочнике C++

#include <conio.h>
int getch();

Эта функция не принимает никаких параметров.

Здесь getch() возвращает значение ASCII символа, считанного из stdin.

Например, если мы введем символ 0 в качестве входа, программа вернет значение ASCII 0, которое равно 49.

Теперь в C/C++ мы можем напрямую преобразовать символ в целое число. Таким образом, при приведении типов, значение ASCII 49 будет приведено к значению символа 0.

Давайте теперь посмотрим на некоторые примеры.

Примеры использования getch()

В качестве простого примера давайте сначала рассмотрим чтение одного символа.

#include <stdio.h>
#include <conio.h>
 
int main() {
    char ch = getch();
    printf("Вы ввели: %c\n", ch);
    return 0;
}

Вывод:

Вы ввели: a

Мы получим такой вывод после того, как нажмем «а» на своей клавиатуре.

Теперь посмотрим на программу, которая ждет 5 символов с клавиатуры.

Обратите внимание, что getch() НЕ будет отображать ввод с клавиатуры. Поэтому, когда вы набираете что-то на клавиатуре, курсор не будет показывать ввод.

Давайте отобразим полную строку только после того, как получим все 5 символов.

#include <stdio.h>
#include <conio.h>
 
int main() {
    // задаем op = {0, 0, 0, 0, 0, 0} = '\0\0\0\0\0\0' string
    char op[6] = {0};
    for (int i=0; i<5; i++) {
        op[i] = getch();
    }
    printf("Принято 5 символов: %s\n", op);
    return 0;
}

Вывод:

Принято 5 символов: Hello

Таким образом, когда мы набираем "Hello", мы получаем правильный вывод.

Обратите внимание, что в выходной строке 6 символов, так как нам нужно зарезервировать 1 байт для '\0', т.е. op будет "Hello\0".

Мы узнали как использовать функцию getch() в C / C++ для получения символьного ввода с клавиатуры. Для получения более подробной информации о Си и Си++ вы можете посмотреть наш раздел по программированию на С++.

14 июля 2020 в 13:23 | Обновлено 7 ноября 2020 в 01:19 (редакция)
Опубликовано: | Оригинал
Статьи,

Добавить комментарий

Ваш E-mail не будет никому виден. Обязательные поля отмечены *