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.