Passwort eingabemit Enter beenden!
-
Hallo ich möchte das die eingabe meines passwortes aufhört wenn ich Enter drücke !
Und dieses Programm muss auf mein linux betriebssystem laufen!string Passwort() { char temp; char passwort[15]; int index = 0; cout<<"Your Passwort Please : \n"; while((temp = getch()) != 13) { cout<<"*"; passwort[index++] = temp; passwort[index] = '\0'; if(temp=='\n') { break; } } return passwort; }
-
AirTrake schrieb:
while((temp = getch()) != 13)Laut ASCII Tabelle hat Enter doch den Wert 13. Sieht doch ok aus, oder was geht bei dir net?
-
klappt trotzdem nicht wenn ich Enter drück kommt ein * und es geht nicht weiter!
-
Na hast du schonmal geschaut was Enter für ein Wert hat, mittels cout << getch(); ?
-
Ja eig.13 oder ?
-
14 ...?
Ist Os-Abhängig. Auf Mac afaik 10, bei Windows afaik 13&14..Übrigens ist der Code komisch. So is besser:
std::string Passwort() { char temp; std::string passwort; std::cout<<"Your Passwort Please : \n"; while((temp=getch()) != 13) { std::cout << '*'; passwort += temp; } return passwort; }Edit: jetz richtig.
-
Auf Windows gibt es "\r\n" bei Enter, deswegen sollte man '\r' abfragen (also 13, wenn man \n abfragt, wird ein Sternchen zu viel ausgegeben). Auf Linux gibts nur '\n', deshalb muss man dort auch '\n' abfragen. Also:
while((temp = getch()) != '\r' || temp != '\n')
-
Hab gerade das hier gefunden:
Drücken der Taste ↵ Enter (daher auch die Bezeichnung Return) entspricht – je nach System – dem CR, dem LF, der Zeichenkette CR LF, oder auch dem Zeichen NL.
Habs grad bei mir versucht, da ist es 10 (Win7 x64 Home). Bei mir an der Schule war es glaub die 13 (Win 2000). Dann ist es bei dir eventuell auch die 10.
-
Nochwas: für'n Backslash brauchst du explizite zeugs
-
Hacker schrieb:
Nochwas: für'n Backslash brauchst du explizite zeugs
???????????????????????????????????????????????
-
Nein, wenn du'n backslash machst, wird der einfach mit eingelesen, anstatt das letzte Zeichen zu löschen.
-
Hacker schrieb:
Nein, wenn du'n backslash machst, wird der einfach mit eingelesen, anstatt das letzte Zeichen zu löschen.
Du meinst wohl ein Backspace == '\b'...
-
std::string Passwort() { char temp; std::string passwort; std::cout<<"Your Passwort Please : \n"; while((temp=getch()) != 13) { if(temp == 8) { passwort.erase(passwort.length()-1); std::cout << "\b \b"; continue; } std::cout << '*'; passwort += temp; } return passwort; }Jetz gehts
-
Hmm naja das liegt glaub ich an dem Rest meines Programmes!
Weil wenn ich id eingib und enter drück kommt des Passwort eingabe feld mit nem Stern ! Also wenn ich dann 10 mach geht programm an der Stelle zu wo ich von id zu pw wechsel !
Hier der kommt zum bessern verstaendnis!#include "regi.h" int main() { string id,name,pw; name = kontoName(); makelibary(name); name = makeDats(name); ofstream fout(name.c_str()); fout<<standartVar::n<<endl; id=Id(); pw=Passwort(); fout<<id<<endl; fout<<pw<<endl; return 0; }#ifndef REGI_H_INCLUDED #define REGI_H_INCLUDED #include <iostream> #include <fstream> #include <string> #include <sys/stat.h> #include <sys/types.h> #include <termios.h> using namespace std; namespace standartVar { int n = 2; } int getch() { static int ch = -1, fd = 0; struct termios neu, alt; fd = fileno(stdin); tcgetattr(fd, &alt); neu = alt; neu.c_lflag &= ~(ICANON|ECHO); tcsetattr(fd, TCSANOW, &neu); ch = getchar(); tcsetattr(fd, TCSANOW, &alt); return ch; } string kontoName() { string name3; cout<<"Konto Name : \n"; cin>>name3; return name3; } void makelibary(string name1) { name1 = "Acc/" + name1; mkdir(name1.c_str(), 0777); } string makeDats (string name2) { name2 = "Acc/"+name2+"/"+name2; return name2; } string Id() { char id[15]; cout<<"Your Id Please : \n"; cin>>id; return id; } string Passwort() { char temp; string passwort; cout<<"Your Passwort Please : \n"; while((temp=getch()) != 10) { cout << '*'; passwort += temp; } return passwort; } #endif // REGI_H_INCLUDEDVielen Dank für die bissherigen Antworten !
-
#include "regi.h" int main() { makelibary(kontoName()); ofstream fout(makeDats(name).c_str()); fout<<standartVar::n << '\n' << Id() << '\n' << Passwort() << '\n'; }Kann man bestimmt noch mehr verbessern...
-
Kann mir keiner helfen?
Danke für den Tipp!
-
Kann mir keiner helfen?
-
-
Klappt leider immer noch nicht mit dem lesen !
Gib alles ein wenn dann Passwort kommt passiert nix wenn ich enter drück -.-
-
wenn ich 10 nehme wird die while schleife übersprungen!
-
Was soll den passieren, wenn du Enter drückst? Wie sieht dein Code aus?