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