Как работает функция getch() в C/C++

В этой статье мы рассмотрим использование функции getch() в C/C++.

Данная функция позволяет прочитать введенные с клавиатуры символы.

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

Давайте рассмотрим использование этой функции на нескольких примерах.

Базовый синтаксис getch() в C/C++

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

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

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

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

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

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

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

Давайте теперь рассмотрим пару примеров.

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

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

#include <stdio.h>
#include <conio.h>

int main() {
    char ch = getch();
    printf("Received Input: %c\n", ch);
    return 0;
}

Вы получите такой результат: 

Received Input: a

Мы получили этот вывод после того, как набрали символ а на клавиатуре. Давайте теперь посмотрим на программу, которая принимает 5 символов с клавиатуры.

Обратите внимание, что getch() не отображает ввод с клавиатуры. Следовательно, когда вы вводите символы, курсор не будет отображать ввод.

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

#include <stdio.h>
#include <conio.h>

int main() {
    // Set op = {0, 0, 0, 0, 0, 0} = '
#include <stdio.h>
#include <conio.h>

int main() {
    // Set 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("Received 5 character Input: %s\n", op);
    return 0;
}
#include <stdio.h>
#include <conio.h>

int main() {
    // Set 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("Received 5 character Input: %s\n", op);
    return 0;
}
#include <stdio.h>
#include <conio.h>

int main() {
    // Set 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("Received 5 character Input: %s\n", op);
    return 0;
}
#include <stdio.h>
#include <conio.h>

int main() {
    // Set 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("Received 5 character Input: %s\n", op);
    return 0;
}
#include <stdio.h>
#include <conio.h>

int main() {
    // Set 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("Received 5 character Input: %s\n", op);
    return 0;
}
#include <stdio.h>
#include <conio.h>

int main() {
    // Set 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("Received 5 character Input: %s\n", op);
    return 0;
}
' string
    char op[6] = {0};     for (int i=0; i<5; i++) {         op[i] = getch();     }     printf("Received 5 character Input: %s\n", op);     return 0; }

Вывод будет таким: 

Received 5 character Input: Hello

Как видите, набрав Hello, мы получили правильный вывод.

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

Заключение

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

Читайте также: Как выполнить реверс строки в C++

Tags:

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