Как запретить ввод букв с клавиатуры - C (СИ)
Формулировка задачи:
Уважаемые,помогите,пожалуйста новичку,как сделать так чтобы нельзя было ввести с клавиатуры ничего , кроме цифр,и ограничить ввод до 4 символов,заранее спасибо.
Забыл сказать,в си ,не си++,работаю в dev c++
Решение задачи: «Как запретить ввод букв с клавиатуры»
textual
Листинг программы
#include <iostream>
#include <windows.h>
using namespace std;
//-----------------------------------------
void wait_digits(int&);
HANDLE hstd=GetStdHandle(STD_INPUT_HANDLE);
//------------------------------------------
int main(){
int a;
cout<<"Enter some character: ";
wait_digits(a);
cout<<"You press "<<a<<endl;
system("pause");
return 0;
}
void wait_digits(int &a){
const int count=10;//с этим числом можно эксперементировать
INPUT_RECORD IR[count];
DWORD read;
while(PeekConsoleInputA(hstd,IR,count,&read)) {
for(int i=0; i<read; i++)
if(IR[i].EventType==KEY_EVENT && isdigit(IR[i].Event.KeyEvent.wVirtualKeyCode)) {
cin>>a;
return;
}
FlushConsoleInputBuffer(hstd);
}
}
Объяснение кода листинга программы
В этом коде реализована функция wait_digits, которая ожидает ввода пользователем числа с клавиатуры.
Код включает следующие действия:
- Ввод числа с клавиатуры: Пользователю предлагается ввести число, после чего функция
wait_digitsожидает ввода числа с клавиатуры. - Проверка введенного числа: Введенное число проверяется на допустимость. Если введено не число, программа продолжает ожидать ввода числа.
- Ожидание ввода числа: Если введено число, программа прекращает ожидание ввода числа и возвращает введенное число.
В основной функции
mainиспользуется функцияwait_digitsдля ожидания ввода числа, после чего введенное число выводится на экран. В конце программы используется функцияsystem, которая приостанавливает выполнение программы до тех пор, пока пользователь не нажмет любую клавишу на клавиатуре. Примечание: Код не полностью запрещает ввод букв с клавиатуры, он просто ожидает ввода числа и игнорирует все остальные символы.