Как можно проверить каждый символ ввода с клавиатуры не применяя функцию getch() из conio.h?
Как можно ограничить ввод ненужных символов от пользователя? В данном случае мне нужно чтобы вводились только 0 и 1, а другие символы игнорировались. Как это реализовать в Си. Есть функция getch(), но как я выяснил она не стандартизована и хотелось бы ее не использовать. Визуально хотел, чтобы получилось нечто подобное.
#include<stdio.h>
#include<ctype.h>
int main(void)
{
char mask = 0;
system("chcp 1251>0");
puts("Введите маску-пароль для шифрования в формате bxxxxxxxx,\n\
где x - 0 или 1. Например: b10011100\n");
putch('b');
char chrTemp;
for (int i = 7; i >=0; i--)
{
while (!(((chrTemp = getch()) == '0') ^ (chrTemp == '1')))
;
putchar(chrTemp);
if (chrTemp == '1')
{
chrTemp = 1<<i;
mask |=chrTemp;
}
}
return 0;
}
Можно конечно считать все данные пользователя, потом их обработать, затем если неправильно - вывести сообщение, что ввод не корректный и попросить заново ввести. Но так задача не стоит!
Как-то реализовано же ввод цифр без букв в приложениях. Гуглил как можно реализовать. Как понимаю всё уходив в какой-то небуферизированный ввод вывод. https://ru.stackoverflow.com/questions/1385825/Какой-функцией-заменить-getch-для-linux
Функции getc() и getchar() не дают сделать подобной реализации. Они сразу печатают символы пока не нажмешь \n.