2 char Felder vergleichen



  • Hallo

    Problem:

    Mochte ein Prog schreiben, das eine Namensliste enthält und beim Programmstart den Benutzer auffordert seinen namen einzugeben.
    Stimmt sein Name mit einem aus der Liste überein ist er Prog-berechtigt.

    void name ()
    {
    	char name_ist [20];
    	char name_soll [] = "list";
    
        cin >> name_ist;
    
    	if ((name_ist) == (name_soll))
    		cout << "Hallo Roland\n";
    	else
    	 cout << "Schade du bist nicht PW berechtigt!\n";
    
    }
    

    nur leider klappt das nicht so wie ich will.
    Das Prog springt nach der if abfrage immer gleich zu else!
    (natürlich hab ich für cin list eingegeben!)
    kann man mit == keine Arrays vergleichen oder wo ist min denkfehler??

    Danke Chris 😕 😕



  • Wenn ich mich recht entsinne, ist nach

    char name_soll[n]

    name_soll ein Zeiger auf name_soll[0]

    von daher müsste name_ist und name_soll immer verschieden sein.

    Wenn du die Array vergleichen willst, würde ich eine Schleife nutzen, es muss ja nur ein Element gleich sein, nicht das ganze Array.



  • Das Array wird implizit in einen Pointer konvertiert. Der zeigt dann auf die Stardaddresse des Arrays. Dass beide Arrays verschiedene Addressen haben sollte klar sein.
    Entweder du verwendest std::string, das kann man dann vergleichen, oder du verwendest die C-Funktion strcmp().

    Gruß



  • Schau dir strcmp an.
    Und wenn du rausgefunden hast wie's geht solltest du stattdessen lieber std::string für name_ist und name_soll nehmen 🙂



  • Danke.
    Dann werd ich mir das mal in meinem Lehrbuch zu gemüde führen und versuchen alles umzusetzen.

    Schau dir strcmp an.
    Und wenn du rausgefunden hast wie's geht solltest du stattdessen lieber std::string für name_ist und name_soll nehmen

    Geb Rückmeldung, wenn es geklappt hat!
    Kann aber etwas dauern.
    Danke an alle 👍

    cu Chris


Anmelden zum Antworten