Как работает функция getch() в C/C++
Development | Комментировать запись
В этой статье мы рассмотрим использование функции 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: C++