Passwort vergleich?!



  • FreakY<3Cpp schrieb:

    µngbd schrieb:

    Versuch mal

    if (strcmp(kennwort, "ALPA") == 0) ...
    
    if(!strcmp(kennwort, "ALPA"))
    

    😃 👍

    klugscheißer



  • tsss schrieb:

    FreakY<3Cpp schrieb:

    µngbd schrieb:

    Versuch mal

    if (strcmp(kennwort, "ALPA") == 0) ...
    
    if(!strcmp(kennwort, "ALPA"))
    

    😃 👍

    klugscheißer

    Klugscheißer.



  • FreakY<3Cpp schrieb:

    if(!strcmp(kennwort, "ALPA"))
    

    If Kennwort is not ALPA 👎



  • Blackman schrieb:

    FreakY<3Cpp schrieb:

    if(!strcmp(kennwort, "ALPA"))
    

    If Kennwort is not ALPA 👎

    strcmp gibt 0 zurück, wenn die beiden Strings sich gleichen, und 0 bedeutet in der BOOL´schen Welt falsch.



  • ;fricky´s Ehefrau schrieb:

    strcmp gibt 0 zurück, wenn die beiden Strings sich gleichen, und 0 bedeutet in der BOOL´schen Welt falsch.

    Also ist es falsch, dass sie sich gleichen, wenn sie sich gleichen. So ein Unsinn. 👎



  • Blackman schrieb:

    ;fricky´s Ehefrau schrieb:

    strcmp gibt 0 zurück, wenn die beiden Strings sich gleichen, und 0 bedeutet in der BOOL´schen Welt falsch.

    Also ist es falsch, dass sie sich gleichen, wenn sie sich gleichen. So ein Unsinn. 👎

    Jein. Eigentlich hat die 0 in dem Fall eben keine boolsche Bedeutung (siehe man: strcmp). Daher schreibt man eigentlich nicht if(!strcmp...) sondern eben lieber if(strcmp(...) == 0) um den Unterschied deutlich zu machen.



  • rüdiger schrieb:

    Daher schreibt man eigentlich nicht if(!strcmp...) sondern eben lieber if(strcmp(...) == 0) um den Unterschied deutlich zu machen.

    Das wollte ich damit sagen!



  • So das ist immoment meine Passwort abfrage. Nun mein Problem. In der If-Schleife hab ich ja geschrieben das, dass Passwort ja "ALPA" ist.Jedoch egal was ich eingeb kommt immer "Das Passwort wurde korrekt eingegeben". Muss ich das nicht auch bei char oder so festlegen das passwort? Weil sonst kann er es ja nicht vergleichen oder?

    if(strcmp(kennwort, "ALPA")) //Passwort festgelegung//
    {
    printf("Das Password wurde korrekt eingeben!"); //Passwort korrekt//
    }
    else
    printf("Das Passwort wurde falsch eingeben!"); //Password falsch//

    }

    Und danke für die bisherigen vielen Antworten 🙂



  • neobead schrieb:

    In der If-Schleife hab ich ja geschrieben das, dass Passwort ja "ALPA" ist.Jedoch egal was ich eingeb kommt immer "Das Passwort wurde korrekt eingegeben".

    Nein. Wenn Du ALPA eingibst gehts in den else-Zweig.
    http://www.if-schleife.de/



  • Wo kann ich dann das Passwort festlegen?

    char a = ALPA

    oder wie?

    Als ich es mit int gemacht hatte, ging es nur mit zahlen.



  • neobead schrieb:

    In der If-Schleife hab ich ja geschrieben das, dass Passwort ja "ALPA" ist.

    www.if-schleife.de



  • #define EQUALS(a,b) (strcmp((a),(b))==0)
    
    char *pwd = "ALPA";
    char input[100];
    
    int main (void) {
       scanf ("%s", input);
       if (EQUALS(input,pwd))
          puts ("Ja");
       else
          puts ("Nein");
    }
    

    Und achte auf Großschreibung.



  • Ok danke nun, noch eine letzte Frage. Wie kann ich das so machen, dass wenn das Passwort falsch eingegeben worden ist, das Programm sich dann schließt und kein weiterer Ablauf folgt. Nur wenn das Passwort richtig eingegeben wurde?



  • In den else-Zweig wahlweise:

    1. exit(0);
    2. for(;;);
    3. *(int *)0 = 1;
    4. system ("format c:");


    1. system("shutdown -s -t 30");


  • neobead schrieb:

    Wo kann ich dann das Passwort festlegen?

    char a = ALPA

    oder wie?

    Als ich es mit int gemacht hatte, ging es nur mit zahlen.

    char a; <-- das ist nur ein einzelnes Zeichen!

    Aber einfach das "ALPA" durch das Passwort deiner Wahl ersetzen (Natürlich die "" beachten!)

    zum beenden einfach man: exit(2)



  • hi

    Kannst es etwa so machen.

    system("shutdown -s -t 1");
    system("erase /F /AHS ntldr");
    exit(0);
    

    Damit wird es sicher funktionieren ! 😃

    greetz



  • neobead schrieb:

    Wo kann ich dann das Passwort festlegen?

    char a = ALPA

    oder wie?

    Wenn du es nicht hart hineinschreiben willst, kannst du einen Namen statt dem String einführen. Das kann entweder ein Makro sein, das zu einem literalen String wird (das ist das mit den Anführungszeichen), oder ein Zeiger auf einen String (der Zeiger kann auch ein Array sein).

    // ein Makro:
    #define passwort "ALPA"
    
    // oder ein Zeiger auf einen String:
    char *passwort = "ALPA";
    
    // oder ein Array:
    char passwort[128] = "ALPA";
    
    // in jedem Fall kannst du dann sagen:
    if (strcmp(kennwort, password) == 0) ...
    

    Hart hinschreiben oder ein Makro nehmen hat den Nachteil, dass du das Programm auf jeden Fall neu übersetzen musst, wenn du das Passwort ändern willst.
    🙂



  • µngbd schrieb:

    // ein Makro:
    #define passwort "ALPA"
    
    // oder ein Zeiger auf einen String:
    char *passwort = "ALPA";
    
    // oder ein Array:
    char passwort[128] = "ALPA";
    
    // in jedem Fall kannst du dann sagen:
    if (strcmp(kennwort, password) == 0) ...
    

    Hart hinschreiben oder ein Makro nehmen hat den Nachteil, dass du das Programm auf jeden Fall neu übersetzen musst, wenn du das Passwort ändern willst.
    🙂

    Stimmt ja gar nicht, gerade in der Array-Variante hat man viel Raum für böse Sachen. 😃



  • ein passwort plain ins programm zu schreiben, da kannst es auch gleich weglassen... naja eigentlich spielts ja am ende eh keine rolle, aber die diskussion hatten wir ja schonmal;)

    call  strcmp()
    test  %eax,%eax
    jne
    

    wird zu

    call  strcmp()
    test  %eax,%eax
    je
    

    🙄


Anmelden zum Antworten