Verdeckte eingabe



  • Hi,
    ja ich nerv mal wieder :-).
    Ich hab mal ne kleine Frage: so ich hab ein kleines Passw programm und ich will das wenn man das passw eingibt nur * kommen wie kann ich das machen ????
    Also für jede Taste die ich bei der Passw eingabe drücke soll ein * kommen
    Mfg & Vielen Danke
    Lacerus



  • Ich würde das mit einer while-Schleife und der getch() Funktion machen.

    Beispiel:

    while(1) {
        char byte = getch();
        if(byte != "\n") {    // hier prüfen, ob die return-Taste gedrückt wurde!!!
            buffer += byte;
            cout << "*";
        } else {
            break;
        }
    }
    


  • Hallo.

    Als überprüfung, ob Enter eingegeben wurde nicht '\n' nehmen, weil '\n' aus zwei Zeichen besteht. Line Feed <LF> und Carriage Return <CR>. Am besten als Abbruchbedingung '\r' nehmen.

    Hier auch ein kleines Beispiel:

    bool checkPassword(const char *pw)
    {
        srand ((unsigned) time(NULL));
        int ch;
        char passwd[21];
        int i = 0, j;
        cin.clear();
        cin.sync();
        while ((ch = getch()) != '\r' && i < 20)
        {
            passwd[i++] = (char)ch;
            for (j=0; j<rand()%5+1; j++)
                cout << "*";
        }
        passwd[i] = '\0';
        if (!strcmp(passwd, pw))
            return true;
        else
            return false;
    };
    


  • 🙂 Jup es funzt nochmal Danke
    Lacerus


Anmelden zum Antworten