Passwortabfrage



  • ja dann geb mal bitte den angegebenen User ein und das Passwort ein... wenns falsch ist wird die untere Meldung ausgegeben... wenns richtig ist wird auch die untere ausgegeben.... also fehler meldet der Compiler keine aber die Ausgabe funzt net => muss an der If Abfrage liegen

    MfG
    gemuse



  • char-array-strings vergleicht man mit strcmp



  • aha...

    kannst du mir vielleicht sagen warum?

    also das heisst bei Zahlen würds gehn..!?!?

    gemuse



  • Richtig, bei Zahlen würd's gehen, bei char-array musst du eben mit den Funktionen für strings Vorlieb nehmen (strcmp, wie std::string ja schon gesagt hat; schau mal in der Hilfe nach 😉 )

    Mfg, smasher1985



  • So läuft es:

    #include <iostream.h>
    #include <stdlib.h>
    #include <string.h>
    void main(void)
    {     
      char user[20], pass[20];     
      cout << "\t\tPasswortabfrage\n";     
      cout << "\t\t------------\n\n";     
    
      cout << "Bitte Benutzername und Passwort eingeben:\n-------------\n";
      cout << "Benutzername: ";     cin  >> user;     
      cout << "\nPasswort    : ";     cin  >> pass;     
    
      if(!strcmp(user,"benutzer") && !strcmp(pass,"passwort"))     
      {                       
        cout << "\n\nPasswort und Username richtig\n\n\n";     
      }     
      else     
      {                       
      cout << "\n\nLeider nicht richtig, probiers nochmal...\n\n\n";     
      }     
    
    }
    

    strcmp (Stringcompare)
    vergleicht zwei variablen oder eine variable und eine zeichenkette (in diesem fall variable & zeichenkette) - wenn beide gleich sind wird 0 zurückgegeben. damit die if abfrage in den TRUE-Zweig kommt machste vor den befehl eine Negation (!) dann wird der wert 1 (TRUE).

    dann das ganze mit logischer AND verkloppen und fertig. 🙂



  • Hallo,

    wenn schon in c++ wieso dan nicht einen string nehmen

    #include <iostream>
    #include <string>
    using namespace std;     // Da sich cout und cin im namensraum std befinden
                             // ein using davor oder vor jedes cout / cin ein std::
    
    int main()               // man sollte int main() und nicht void main() benutzen
    {     
      string user, pass;     // hier halt keine chars verwenden, sondern die                      
                             // stringklasse    
    
      cout << "\t\tPasswortabfrage\n";     
      cout << "\t\t------------\n\n";     
    
      cout << "Bitte Benutzername und Passwort eingeben:\n-------------\n";
      cout << "Benutzername: ";     cin  >> user;     
      cout << "\nPasswort    : ";     cin  >> pass;     
    
      if(user=="benutzer" && pass=="passwort") // Dann geht auch der normale                   
                                               // Vergleich
      {                       
        cout << "\n\nPasswort und Username richtig\n\n\n";     
      }     
      else     
      {                       
      cout << "\n\nLeider nicht richtig, probiers nochmal...\n\n\n";     
      }     
    
    return 0;         // wenn int main() dann darf ein return nicht fehlen.
    }
    

    grüße Con@n

    [ Dieser Beitrag wurde am 20.03.2003 um 00:20 Uhr von Con@n editiert. ]



  • @ Con@an: Wer sagt denn, dass das return in der main-Funktion nicht fehlen darf??? Also, so weit ich weiß, muss das keineswegs stehen 😕



  • Damit verhindert man aber eine WARNING, und die kann Anfänger verwirren! Außerdem lernt er grad C, also soll er's doch auch richtig lernen, oder?

    void main(void)
    {
        return;
    }
    

    bzw.

    int main()
    {
        return 0; //oder jeder x-beliebige andere (ganzzahlige) Wert!
    }
    


  • Original erstellt von Hepi:
    Außerdem lernt er grad C, also soll er's doch auch richtig lernen, oder?

    Ja und darum sollten wir ihm an dieser Stelle auch sagen dass void main() kein C/C++ ist. main() hat laut Standard immer den Rückgabewert int.

    [ Dieser Beitrag wurde am 20.03.2003 um 22:59 Uhr von nman editiert. ]



  • dreifach hält besser:

    Ja und darum sollten wir ihm an dieser Stelle auch sagen dass void main() kein C/C++ ist. main() hat laut Standard immer den Rückgabewert int.

    http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=main#Answ
    int main() oder void main()?



  • Steht der konstante String "benutzer" für den Benutzernamen?



  • smasher1985 schrieb:

    @ Con@an: Wer sagt denn, dass das return in der main-Funktion nicht fehlen darf??? Also, so weit ich weiß, muss das keineswegs stehen 😕

    Korrekt. Es darf weggelassen werden, das return in main...



  • [quote="simon.gysiKorrekt. Es darf weggelassen werden, das return in main...[/quote]

    Ja aber warum? Ist main nicht auch eine Funktion und muss etwas zurückliefern?



  • Peter Piksa schrieb:

    So läuft es:

    Aber nur auf Compilern die den C++ Standard nicht richtig umsetzen.

    #include <iostream> // NICHT #include <iostream.h>
    #include <cstdlib>  // NICHT #include <stdlib.h>
    #include <cstring>  // NICHT #include <string.h>, ich ziehe std::string aber vor
    
    using namespace std;
    
    int main()          // NICHT void main()
    //...
    

    cu André



  • Ist das Hervorholen von fünf Jahre alten Beiträgen neuerdings Mode unter den Spammern? 🙄



  • smasher1985 schrieb:

    @ Con@an: Wer sagt denn, dass das return in der main-Funktion nicht fehlen darf??? Also, so weit ich weiß, muss das keineswegs stehen 😕

    Jede Funktion (außer void-.-) sollte einen Wert zurückgeben. Und wer schreibt bitte ne Main Funktion ohne return Wert? oO



  • Hepi schrieb:

    Damit verhindert man aber eine WARNING, und die kann Anfänger verwirren! Außerdem lernt er grad C, also soll er's doch auch richtig lernen, oder?

    void main(void)
    {
        return;
    }
    

    bzw.

    int main()
    {
        return 0; //oder jeder x-beliebige andere (ganzzahlige) Wert!
    }
    

    Mein Compiler meldet nichts, wenn der Returnbefehl fehlt!



  • intel schrieb:

    Mein Compiler meldet nichts, wenn der Returnbefehl fehlt!

    Dann arbeitet er auch korrekt.

    ISO/IEC14882 3.6.1 / 5 schrieb:

    A return statement in main has the effect of leaving the main function (destroying any objects with automatic
    storage duration) and calling exit with the return value as the argument. If control reaches the end
    of main without encountering a return statement, the effect is that of executing
    return 0;



  • drakon schrieb:

    Dann arbeitet er auch korrekt.

    Danke für die eindeutige Klärung!


Anmelden zum Antworten