Скрыть символы в консоли при вводе пароля - 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для обозначения конца строки