Vergleichsoperation falsch?

maxbee

Grünschnabel
huhu,

also folgendes problem:
ich hab:
Code:
class kontakt 
{
        public:
                char Nachname[20];
};

kontakt kp[20];

void suchen()
{
     char name[20]
     .....
      cout <<"Nachname: ";
      cin >>name;
      .....
      if (kp[i].Nachname == name)
      {
		cout << "Datensatz gefunden!"<<endl;
					
       }
}

so wenn ich nun compilier und bei void suchen haltepunkte einfüge und mit F10 immer weiter gehe, sehe ich dass kp[i].Nachname den wert 0x0043195c "gruber" und auch name
0x0012fd4c "gruber" hat.
aber leider gottes geht er ums verrecken nicht in die if anweisung rein...

warum ist das so?
was mach ich falsch?

danke

Max
 
Da C keine echten Strings hat, sondern nur die char-Arrays, kannst du die nicht mit == vergleichen. Benutze dazu strcmp, oder besser strncmp. Achtung, strcmp bzw. strncmp gibt 0 bei Gleichheit zurück, -1 wenn der erste String kleiner und 1 wenn der erste String grösser als der zweite ist.

Noch besser, bei C++ den std::string verwenden, der kann mit == umgehen.
 
Du mußt einen strcmp(...) machen! So vergleichst Du die Adressen der Strings.
Erklärung: ein char name[20] deklariert ein Array der Größe 20 Bytes. Die Adresse des Speichers ist name oder &name[0] (ist identisch). Also vergleichst Du die Adresse von name mit der Adresse von kp[i].Nachname.
So geht's:
Code:
if(strcmp(kp[i].Nachname, name) == 0){//hier Code für gleiche Strings}
 
Zurück