passwortabfrage schnell bitte!!!



  • also ich habe ein problem: Ich muss für die schule in c++ eine passwortabfrage machen.
    und zwar muss dasso aussehen:
    ich muss eine passwort und einen benutzernamen aus einer datei auslesen wenn der user sie eingibt.
    am besten mit den befehlen: fin.open() und fin.close()
    und das programm muss den benutzernamen mit dem passwort vergleichen und ausgeben ob "er" jetzt eingeloggt ist oder nicht.
    ich hoffe ihr könnt mir auf die schnelle weiterhelfen

    eine normale passwortabfrage kann ich, also für einen user
    char acc[10]="afterburner";
    char pw[10]="lalalala";
    und die dann vergleichen mit strcmp etc.

    aber ich muss unbedingt die sachen aus einer externen textdatei lesen.

    bitte helft mir

    afterburner 😞 😞



  • FAQ



  • also irgendwie finde ich im faq nichts daüber..
    kannst du mir denn nicht mal so ein beispiel programm schreiben? bzw. den quellcode geben??
    wäre euch echt sehr dankbar..
    after



  • Original erstellt von afterburner:
    **also irgendwie finde ich im faq nichts daüber..
    **

    bitte schließen, unbeholfener Trollversuch! :p



  • du brauchst eine eingabe, habt ihr sicher gemacht,

    entweder als charakterarrays (wie du es vorgibst) oder als string (mach es am besten so, wie der lehrer es euch beigebracht hat ersteinmal...)

    also jemand gibt ein wort ein und dann benutzt du die funktion strcmp

    int strcmp(const char *s1, const char *s2);
    //vergleicht die beiden Strings: liefert bei Gleichheit 0 zurück, einen 
    //negativen Wert, falls lexikographisch s1<s2, einen positiven Wert, falls 
    //lexikographisch s1>s2
    

    also wenn null rauskommt, sind die strings gleich.

    das auslesen aus der datei erfolgt -logisch- vorher...

    fang einfach mal an und poste den code, den du produzierst, damit man dir konkret helfen kann.



  • k danke dann werde ich jetzt erstmal wat versuchen

    ich schreib euch denn meine fortschritte



  • oops, ich hatte das hier gestern im falschen thread gepostet.

    map ist hier die richtige antwort. so funktionierts (wenn du keine leeren passwoerter hast und weder name noch passwort leerzeichen enthalten duerfen).
    
    [code type="C++"]  
    typedef pair<string,string> Credentials;
    typedef map<string,string> Passwords;
    
    namespace std{ //hack, dont know how to do this better
    istream&operator>>(istream&is, Credentials&p){
        return is>>p.first>>p.second;
    }
    }
    bool login(const string&user, const string&pwd, const string&file){
        if(ifstream f(file.c_str())){
            Passwords pass;
            istream_iterator<Credentials> begin(f), end;
            copy(begin, end, inserter(pass, pass.end()));
            return pass[user]==pwd;
        }else{
            return false;
        }
    
    }
    


  • 🙄

    er wollte es selber versuchen.. hmm wird er wohl trotzdem machen 😉



  • So ein Zeug bietet ihr Anfängern an?! 😃



  • jeder kann doch ignorieren oder zum lernen verwenden was immer er will.


Anmelden zum Antworten