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

Объяснение кода листинга программы

  1. i=0 — инициализация переменной i в качестве счетчика символов в пароле
  2. password[i] = getch() — получение следующего символа из ввода пользователя и сохранение его в password[i]
  3. password[i] != '\r' — проверка, не является ли текущий символ символом новой строки
  4. if(password[i]=='\b' && i!=0) — проверка, не является ли текущий символ символом обратной слепой (backspace) и не является ли i равным 0
  5. printf(%s,\b \b); — вывод символа обратной слепой (backspace)
  6. i--; — уменьшение значения i на 1
  7. else if(password[i]!='\b') — проверка, не является ли текущий символ символом обратной слепой (backspace)
  8. printf(%c, '*'); — вывод символа звездочки вместо текущего символа
  9. i++; — увеличение значения i на 1
  10. password[i] = '\0'; — добавление символа нулевого символа в конец строки password для обозначения конца строки

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы