Скрыть символы в консоли при вводе пароля - 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
для обозначения конца строки
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д