Wieso ist das Passwort falsch?



  • Wieso wird mir bei diesem Code

    #include "include.h"
    #include <conio.h>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	char password[32] , code[] = "da";
    	int x = 0 , counter = 0;
    
    	while( 1 )
    	{
    		x = getch();
    		if( x != 13 ) // falls nicht enter
    		{
    			password[counter] = char(x);
    			counter++;
    			printf("%c" , char(x)); // ersetzbar durch + oder * etc
    		}
    		else // falls enter
    		{
    			password[counter] = '\0'; // 0-Terminator
    			break; // while-break
    		}
    	}
    	printf ( "\n\nEingabe: %s\tPasswort: %s" , password , code); // gegenüberstellung
    	if( password == code ) 
    	{
    		MessageBoxA( 0 , " Right! " , " Success " , MB_OK | MB_SYSTEMMODAL );
    	}
    	else
    	{
    		MessageBoxA( 0 , " Wrong Password! " , " Failure " , MB_OK | MB_SYSTEMMODAL);
    	}
    }
    

    angezeigt, dass das Passwort "da" falsch ist?
    Probierts mal aus mit da kommt immer die Failure Messagebox ._.
    Hab sogar nochmal beides ausgeben lassen zum Vergleich und beides ist das gleiche...
    Hoffentlich kann mir jemand helfen.

    MfG RikuXan



  • Das hier

    if( password == code )
    

    vergleicht die Adresse von "password" mit der Adresse von "code". Unwahrscheinlich, daß beide gleich sind.



  • "0-Terminator"... 😃 👍 👍



  • Es sind zwei Arrays aus Zeichen, also Strings.
    Dann nimm auch eine Funktion zum vergleichen von Strings:

    if ( strcmp( passwort, code) == 0){
    


  • Wieso rufst Du eine Funktion namens char auf?! *duck*



  • LordJaxom schrieb:

    Wieso rufst Du eine Funktion namens char auf?! *duck*

    *grins* gar nicht gesehen ...



  • LordJaxom schrieb:

    Wieso rufst Du eine Funktion namens char auf?! *duck*

    hölle! welcher compiler frisst das? also meiner meldet syntax-errors.
    🙂



  • ~fricky schrieb:

    LordJaxom schrieb:

    Wieso rufst Du eine Funktion namens char auf?! *duck*

    hölle! welcher compiler frisst das? also meiner meldet syntax-errors.
    🙂

    Ein C++-Compiler, z.B. 🙂

    MfG,

    Probe-Nutzer



  • Probe-Nutzer schrieb:

    Ein C++-Compiler, z.B.

    im ernst? gibt's da 'ne 'char' funktion?
    (ich hab grad keinen c++ compiler hier und kanns leider nicht ausprobieren).
    🙂



  • ~fricky schrieb:

    Probe-Nutzer schrieb:

    Ein C++-Compiler, z.B.

    im ernst? gibt's da 'ne 'char' funktion?
    (ich hab grad keinen c++ compiler hier und kanns leider nicht ausprobieren).
    🙂

    Naja, so ähnlich, das nennt sich "function-style cast" 🙂

    MfG,

    Probe-Nutzer



  • Probe-Nutzer schrieb:

    Naja, so ähnlich, das nennt sich "function-style cast" 🙂

    ach so. das ist ein cast, sieht aber aus wie ein funktionsaufruf. na gut...
    🙂



  • ~fricky schrieb:

    Probe-Nutzer schrieb:

    Naja, so ähnlich, das nennt sich "function-style cast" 🙂

    ach so. das ist ein cast, sieht aber aus wie ein funktionsaufruf. na gut...
    🙂

    Ist doch gut so. Ein cast nimmt einen Typen auf, und liefert einen anderen zurück. In ordentlichen Sprachen lässt sich sowas sogar als Funktion überladen.



  • Tachyon schrieb:

    Ist doch gut so. Ein cast nimmt einen Typen auf, und liefert einen anderen zurück.

    genau genommen macht ein cast in C ja auch nix anderes, nur gibt es in C eben nur eine schreibweise für casts. eben ganz im sinne des 'spirit of C':
    'provide only one way to do an operation'
    🙂



  • So, genug geklugscheißert. Zurück zum Thema!



  • oberlehrer schrieb:

    Zurück zum Thema!

    die frage ist doch schon beantwortet.
    🙂



  • Also mit strcmp hat alles geklappt danke für die Hilfe blöder Fehler, aber ich weiß es immerhin jetzt 🙂
    Btw zur cast-Geschichte, ich kann auch (char)x schreiben zB, finde aber das sieht noch komischer aus _

    MfG RikuXan



  • RikuXan schrieb:

    ...
    ich kann auch (char)x schreiben zB, finde aber das sieht noch komischer aus _

    MfG RikuXan

    So ist die Verwechslungsgefahr mit einem Funktionsaufruf aber nicht gegeben. Im Übrigen: Alles gewöhnungssache.



  • RikuXan schrieb:

    Btw zur cast-Geschichte, ich kann auch (char)x schreiben zB, finde aber das sieht noch komischer aus _

    Mit dem kleinen Unterschied, dass das letztere C ist, und der Function-Style Cast nicht. Ich dachte, das solltest Du vielleicht wissen, vor allem da Du im C-Board fragst.



  • RikuXan schrieb:

    ich kann auch (char)x schreiben zB, finde aber das sieht noch komischer aus...

    in C geht's aber nur so. und solltest du mal einen richtigen C-compiler benutzen, dann wird er diesen seltsamen 'funktionsaufruf-cast' nicht haben wollen.
    🙂


Anmelden zum Antworten