Anfänger macht dummen Fehler immer wieder - Hilfe bitte



  • Hallo,
    also ich bin ein blutiger Anfänger in C++ und ich habe mir ein kleines Login Programm gemacht aber wie gesagt sehr einfach.
    Also es kommt immer die Nachricht im else Teil und ich weis nicht wieso da ich meiner Meinung nach alles richtig gemacht habe.
    Nun hier der Source:

    #include <iostream.h>
    
    const char Name1[10] = "Phill";
    const int PW1 = 110;
    
    void main()
    {
      char Name[10];
      int PW;
    
      cout <<"Name :";
      cin.get(Name, 10);
    
      cout <<"Passwort :";
      cin>>PW;
    
      if (Name == Name1 && PW == PW1)
      {
         cout <<"Sie sind Angemeldet\n";
      }
      else
      {
        cout <<"Sie sind nicht angemeldet\n";
      } 
    
      cout <<Name1;
    };
    

    Ich bitte um eure Weisheit.
    mfg Phill



  • da muss hin:

    if (strcmp(name1,name)==0 && PW == PW1)
    

    weil man c-strings nicht so einfach vergleichen kann



  • Erstens es heißt (nach aktuellem Standard) iostream (ohne .h) im namespace std; also

    #include <iostream>
    using namespace std;
    

    Desweiteren heißt es int main() und nicht void main().

    So nun zu deinem Problem.
    Für den Datentyp char* und für char-Arrays ist der Vergleichs-Operator für diesen Zweck nicht überladen. Nutze stattdesen die Funktion strcmp() oder strstr().

    Also:

    if(strcmp(Name, Name1) == 0 && strcmp(PW, PW1) == 0)
          ...
    

    //Edit: 3 Sekunden Zu spät...

    Caipi



  • Hi,

    wenn du eh schon C++ benutzt, würde ich dir empfehlen, dir mal std::string anzugucken. Das vereinfacht solche Dinge enorm, und ein Vergleich mit == ist auch möglich.



  • Hi,
    jo erstmal danke 🙂
    Also ich lerne zurzeit noch aus einem Online Tut werde aber mir wahrscheinlich demnächst ein schönes C++ Buch kaufen wie es sich auch gehört wenn man so etwas schon lernen will.

    mfg Phill



  • Caipi schrieb:

    if(strcmp(Name, Name1) == 0 && strcmp(PW, PW1) == 0)
    

    PW und PW1 sind keine char arrays -.-



  • life schrieb:

    Caipi schrieb:

    if(strcmp(Name, Name1) == 0 && strcmp(PW, PW1) == 0)
    

    PW und PW1 sind keine char arrays -.-

    Uuups. 🙂

    Caipi



  • hat mich aber trotzdem gewundert, warum pw und pw1 als int deklariert wurden. wäre doch sinniger (auf grund der pflicht eines jeden programmieres, seine proggs & funktionen so allgemein wie möglich zu halten), die auch als char[] zu machen, oder?



  • Ja pw sollte string oder char* sein
    er will ja mit dem PW nicht rechnen, sondern vergleichen

    was ist wenn jemand pw hat

    98745631445 - und das jetzt einem int zuweisen

    oder einer probiert aus

    PW: Osterhase --> stürzt da das programm nicht ab, anstatt fehlermeldung zu bringen?


Anmelden zum Antworten