Скрыть символы в консоли при вводе пароля - C (СИ)
Формулировка задачи:
Мне нужно ввести пароль таким образом(все через консоль):
если пользователь нажимаешь какую-нибудь клавишу, то вместо нее выводится *, если он нажимает backspace, то звездочка понятное дело должна исчезнуть.
Пример: вводят 12345 выводится *****, потом нажимают два раза backspace и должно остаться только ***.
У меня пока получился такой код:
Просто нигде не могу найти как убрать эти символы *. Спасибо кто поможет!)
printf("Введите пароль:\n"); for(i=0;(password[i]=_getch())!='\r' && i<M;) { if(password[i]=='\b' && i!=0) { i--; } else if(!(password[i]=='\b' && i==0)) { i++; printf("*"); } } password[i]='\0';
Решение задачи: «Скрыть символы в консоли при вводе пароля»
textual
Листинг программы
for(i=0;(password[i] = getch()) != '\r';) { if(password[i]=='\b' && i!=0) { printf("%s", "\b \b"); i--; } else if(password[i]!='\b') { printf("%c", '*'); i++; } } password[i] = '\0';
Объяснение кода листинга программы
i=0
— инициализация переменнойi
в качестве счетчика символов в паролеpassword[i] = getch()
— получение следующего символа из ввода пользователя и сохранение его вpassword[i]
password[i] != '\r'
— проверка, не является ли текущий символ символом новой строкиif(password[i]=='\b' && i!=0)
— проверка, не является ли текущий символ символом обратной слепой (backspace) и не является лиi
равным 0printf(
%s,
\b \b);
— вывод символа обратной слепой (backspace)i--;
— уменьшение значенияi
на 1else if(password[i]!='\b')
— проверка, не является ли текущий символ символом обратной слепой (backspace)printf(
%c, '*');
— вывод символа звездочки вместо текущего символаi++;
— увеличение значенияi
на 1password[i] = '\0';
— добавление символа нулевого символа в конец строкиpassword
для обозначения конца строки
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д